这道题简单的翻译成纯数学语言就是给你n个数字,每次运算只能是加1或者减1,问经过最短几步可以使得n个数字相等

由于题目限定了n个数字一定有平均数,所以求出avg,将所有比其大的数字或者比其小的数字的差加起来就是步数

见代码:

#include <stdio.h>

int main()
{
    int n,h[50],s=1;
    while(scanf("%d",&n)!=EOF&&n)
    {
        int i,sum=0,avg,result=0;
        for(i=0;i<n;i++)
        {
            scanf("%d",&h[i]);
            sum+=h[i];
        }

        avg=sum/n;
        for(i=0;i<n;i++)
        {
            if(h[i]<avg)
                result+=(avg-h[i]);
        }

        printf("Set #%d\nThe minimum number of moves is %d.\n\n",s++,result);
    }

    return 0;
}

 

相关文章:

  • 2021-12-26
  • 2022-12-23
  • 2021-07-29
  • 2022-12-23
  • 2021-09-09
  • 2021-08-25
  • 2021-12-20
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-10-04
  • 2021-09-22
  • 2022-03-06
  • 2022-12-23
  • 2022-12-23
  • 2021-11-06
相关资源
相似解决方案