这次您不是一个能够杀死九头蛇的熟练战士(请参阅此处和此处),而是您是一个不了解如何杀死一种生物或使用哪种武器对付该生物的战士。
在这个问题上,每当切断一个头时,两个头就会在同一位置长出。由于您没有同时切断许多头的机制,因此头的数量只会增加。在这种情况下,我们的Hydra可以从N(N⩾1)个头开始。让我们将第一个遇到的世代称为世代,我们将来自第一世代的头像表示为0,将第一次打击后创建的头像表示为1,依此类推。
输入值
您将得到一个整数,该整数N表示Hydra最初具有多少个头,以及一个N包含要在其中使用哪个索引的大小列表(在示例中,我将使用0索引格式)。您始终可以假设给定的索引是有效的-请记住,列表(即:heads)会随着您削减heads而增长。
例
输入:N = 4和[0,4,2,5]
第0代-攻击指数0
0 0 0 0 => 1 1 0 0 0
^ ^ ^
第1代-攻击指数4
1 1 0 0 0 => 1 1 0 0 2 2
^ ^ ^
第2代-攻击指数2
1 1 0 0 2 2 => 1 1 3 3 0 2 2
^ ^ ^
第三代-攻击指数5
1 1 3 3 0 2 2 => 1 1 3 3 0 4 4 2
^ ^ ^
上一代
1 1 3 3 0 4 4 2
如您所见,给定的索引与上一代的列表有关。
输出量
您需要输出最后一代。
测试用例
N = 1 and [0] => [1,1]
N = 2 and [0,0] => [2,2,1,0]
N = 2 and [0,1] => [1,2,2,0]
N = 2 and [1,0] => [2,2,1,1]
N = 2 and [1,1] => [0,2,2,1]
N = 4 and [0,4,2,5] => [1,1,3,3,0,4,4,2]
N = 6 and [0,0,0,0,0,0] => [6, 6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0]
N = 6 and [5,6,7,8,9,10] => [0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 6]
N = 10 and [1,7,3,12,9,0,15,2,2,10] => [6, 6, 9, 9, 8, 1, 3, 3, 0, 0, 10, 10, 2, 5, 5, 0, 0, 4, 7, 7]
这是代码高尔夫球,所以最短答案以字节为单位!
N(...)和一个大小列表N(但是当我第一次阅读时,我也错过了该部分)挑战。)因此,N这根本没用。
N从输入中删除的内容,因为它是作为数组的大小“隐式”给出的。但是,我认为这些解决方案将通过提供N而不是依靠array.size()或类似的方式节省字节。