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

时间:2015-10-24 17:30:16

标签: c++ algorithm

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

4 2 1 1

我想在最小操作中使所有数字相同,我只能执行一种操作:

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

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

3 2 1 2

将1添加到第3个元素并从第1个元素中减去1

2 2 2 2

array element can be 0 but not a negative number 

我正在用c ++编写代码。

1 个答案:

答案 0 :(得分:6)

以下是一些提示:

  1. 每个操作减少1并将元素的总和增加1,因此总和不会改变。
  2. average = sum / n以来 - 这意味着平均值也不会改变。
  3. a1=a2=...=an时,它们都等于平均值​​。
  4. 使用这些提示,你可以找出一个算法来做到这一点。