您是该地区最好,最著名的英雄。最近,有传言说九头蛇一直在附近的峡谷中闲逛。作为您的勇敢和善良的英雄,您会发现今天晚些时候可以去检查一下。
水合物的问题在于,每当您尝试切断其头部时,都会有一些新的头部长回来。幸运的是,您拥有可以一次切断多个头部的剑。但是要注意的是,如果九头蛇的头部少于刀口,那么您将无法攻击九头蛇。当九头蛇的头部完全为零时,您就杀死了它。
还有一把特殊的剑,叫做“平分器”,可以切断九头蛇一半的头,但前提是头数是偶数。当头数为奇数时,完全不能使用平分线。这与切断零头不同。
因此,您已经决定要编写一个计算机程序,以找出消灭九头蛇的最佳方法。
任务
您将获得输入
- 九头蛇开始的头数
- 九头蛇每回合的头数
- 可供使用的剑列表(每把都是平分线或每回合切割固定数目的刀头)
您应该输出一个动作列表,该动作将在尽可能少的回合时间内杀死九头蛇。如果没有办法杀死九头蛇,那么您必须输出其他值来指示这样做(如果您的语言是强类型的,则可以使用空列表)。如果有多种消灭九头蛇的最佳方法,您可以输出其中任何一种或全部。
这是一个代码问题,因此答案将以字节计分,而字节越少越好。
测试用例
可根据要求提供更多
5 heads, 9 each turn, [-1,-2,-5] -> [-5]
12 heads, 1 each turn, [/2,-1] -> No solution
8 heads, 2 each turn, [-9, -1] -> [-1,-9]
3 heads, 23 each turn, [/2,-1,-26] -> [-1,-1,-26,-26,-26,-26,-26,-26,-26,-26]
16 heads, 1 each turn, [/2, 4, 2] -> [/2,-4,/2,-4]
这个问题是HydraSlayer主要机制的简化版本。如果您喜欢这种类型的拼图,我建议您将其检出,这很有趣。我与游戏没有任何隶属关系。
1
每回合增加的头的数量是恒定的,是吗?不依赖于切断头的数量吗?
—
KSmarts
@KSmarts是的。
—
Ad Hoc Garf Hunter
如果等分线仅在头数为偶数的情况下起作用,这是否意味着在头数奇数的情况下它什么也不做?@ThePirateBay的解决方案将是[/ 2,-26]
—
dj0wns
@ dj0wns 当平数为奇数时,将无法使用。
—
Ad Hoc Garf Hunter
@Nnnes这似乎是正确的,顺便说一句
—
Ad Hoc Garf Hunter
[/2, -2, /2, -2, -4]
也可行。