ZOJ Problem Set

这道题简单的翻译成纯数学语言就是给你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
The minimum number of moves is %d.

",s++,result);
    }

    return 0;
}
原文地址:https://www.cnblogs.com/xlturing/p/3337711.html