Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何找到使数组包含所有相同元素的最小步骤数?_C++_Algorithm - Fatal编程技术网

C++ 如何找到使数组包含所有相同元素的最小步骤数?

C++ 如何找到使数组包含所有相同元素的最小步骤数?,c++,algorithm,C++,Algorithm,我有一个由N个项目组成的数组,例如: 4 2 1 1 我希望在最小操作中使所有数字相同,并且我只能执行一种类型的操作: 如果我给任何一个数加1,那么我必须从另一个数中减去1 在我们的示例中:将1添加到第四个元素,并从第一个元素中减去1 3 2 1 2 第三个元素加1,第一个元素减1 2 2 2 2 array element can be 0 but not a negative number 我在C++中编码。 这里有一些提示: 每个操作都会将元素的总和减少1并增加1,因此总和不会改

我有一个由N个项目组成的数组,例如:

4 2 1 1
我希望在最小操作中使所有数字相同,并且我只能执行一种类型的操作:

如果我给任何一个数加1,那么我必须从另一个数中减去1

在我们的示例中:将1添加到第四个元素,并从第一个元素中减去1

3 2 1 2
第三个元素加1,第一个元素减1

2 2 2 2

array element can be 0 but not a negative number 

我在C++中编码。

这里有一些提示:

  • 每个操作都会将元素的总和减少1并增加1,因此总和不会改变
  • 因为
    average=sum/n
    -这意味着平均值也不会改变
  • 当a1=a2=…=an时,它们也都等于平均值

  • 使用这些提示,您就可以找到一个算法来实现这一点。

    我认为代码可以解决这个问题。(而且不要那么挖苦人:你试了什么?@Aman,尼尔·柯克只是把我的答案弄糊涂了,所以我没有得到投票。你可以用我的答案。我想要一个通用算法。不仅仅是为了这个array@aman,您可以使用*0、我的或下面的平均值。这就是全部。
    modf()
    在这里也很好,但您需要使用2个操作。我试图给您投票,但最近我投了太多废话,我现在已经达到了极限:(