飞镖之子问题是 Al Zimmermann编程竞赛的竞赛,于2010年6月20日结束:
假设您有一个划分为R区域的飞镖靶.每个飞镖靶区域具有与其相关联的正整数值.进一步假设你有D型飞镖并且你把它们扔在飞镖上.每个飞镖都落在一块板的R区域或完全错过了板.您的分数是飞镖落地区域的值的总和.错过董事会的飞镖对你的分数没有贡献.如果多个飞镖落在同一区域,则会多次累积该区域的值.
例如,假设R = 5,即飞镖区域具有值(1,2,4,7,11),并且D = 3.如果您的三个飞镖落在区域2,4和11中,则得分为17分.如果一个飞镖错过了棋盘而另外两个掉落在7区,则得到14分.
飞镖问题是:对于给定的R和D,确定应该与飞镖的R区域相关联的值,以便最大化通过投掷D飞镖无法达到的最小分数.
Run Code Online (Sandbox Code Playgroud)D = number of darts R = number of dartboard regions 3 1 through 40 4 1 through 30 5 1 through 20 6 1 through 10
================================================== ================================
使用的基本算法(解释D = 3
)
我从下面显示的结果数组开始.0和1是飞镖靶区域应该存在的分数.0表示飞镖错过了电路板.所以,我将为41个元素生成这个数组(一个额外补偿0).1是强制性的,因为否则没有其他方式来生成1.
____ ____
| | |
| 0 | 1 |
|____|____|
Run Code Online (Sandbox Code Playgroud)我生成了一个临时数组,它使用结果数组中的dart分数显示所有总数是可以实现的,三次抛出.带下划线的元素是用于生成划痕的元素.
0 = 0 …
Run Code Online (Sandbox Code Playgroud)