有n个孩子围成一圈。每个孩子手里有一些糖果(可能是负数、正数或零)。他们可以把一个糖果分给相邻的孩子。最终结果是,所有孩子都应该在最少的步骤内拥有零个糖果。
假设我们有4个孩子,他们手中有(-4, -2, 4, 2)颗糖果,那么顺序将是:
1.(-3, -2, 4, 1) 2.(-2, -2, 4, 0) 3.(-2, -1, 3, 0) 4.(-2, 0, 2, 0) 5.(-2, 1, 1, 0) 6.(-2, 2, 0, 0) 7.(-1, 1, 0, 0) 8.( 0, 0, 0, 0)
这是一个可能的答案,我需要找到最少的步骤数。
循环1:找到旁边的人是否有正的糖果,然后把它给负的糖果,直到糖果数为零并把糖果数加起来。 循环2:找到邻居的邻居是否有正的糖果,然后把它给负的糖果,直到糖果数为零,并加上2(给糖果的数量)。 以此类推。
我的方案复杂度太高了,导致超时。我该如何减少复杂度?
假设我们有4个孩子,他们手中有(-4, -2, 4, 2)颗糖果,那么顺序将是:
1.(-3, -2, 4, 1) 2.(-2, -2, 4, 0) 3.(-2, -1, 3, 0) 4.(-2, 0, 2, 0) 5.(-2, 1, 1, 0) 6.(-2, 2, 0, 0) 7.(-1, 1, 0, 0) 8.( 0, 0, 0, 0)
这是一个可能的答案,我需要找到最少的步骤数。
循环1:找到旁边的人是否有正的糖果,然后把它给负的糖果,直到糖果数为零并把糖果数加起来。 循环2:找到邻居的邻居是否有正的糖果,然后把它给负的糖果,直到糖果数为零,并加上2(给糖果的数量)。 以此类推。
我的方案复杂度太高了,导致超时。我该如何减少复杂度?