• ZCMU--1415: Box of Bricks(C语言)


    Description

    Little Bob likes playing with his box of bricks. He puts the bricks one upon another and builds stacks of different height. ``Look, I've built a wall!'', he tells his older sister Alice. ``Nah, you should make all stacks the same height. Then you would have a real wall.'', she retorts. After a little con- sideration, Bob sees that she is right. So he sets out to rearrange the bricks, one by one, such that all stacks are the same height afterwards. But since Bob is lazy he wants to do this with the minimum number of bricks moved. Can you help?

    Input

    The input consists of several data sets. Each set begins with a line containing the number n of stacks Bob has built. The next line contains n numbers, the heights hi of the n stacks. You may assume 1 <= n <= 50 and 1 <= hi <= 100.

    The total number of bricks will be divisible by the number of stacks. Thus, it is always possible to rearrange the bricks such that all stacks have the same height.

    The input is terminated by a set starting with n = 0. This set should not be processed.

    Output

    For each set, first print the number of the set, as shown in the sample output. Then print the line ``The minimum number of moves is k.'', where k is the minimum number of bricks that have to be moved in order to make all the stacks the same height. 

    Output a blank line after each set.

    Sample Input

    6
    5  2  4  1  7  5
    0

    Sample Output

    Set #1
    The minimum number of moves is 5.
    解析:就是求最少移动方格数让每个数相同,题干中说总和 s 能整除个数n,所以每个最后都是平均数s/n个,题目求的是最少移动方格数,而不是最少操作次数,我们肯定就大于平均数的移到小的即可,移动方格数就是a[ i ]减去平均数,至于怎么移动,移给哪堆就不用考虑了。
    1. #include
    2. int a[50];
    3. int main()
    4. {
    5. int n,s,p,c=1,i;
    6. while(~scanf("%d",&n),n!=0){
    7. s=0,p=0;//s用来累加总方格数,p用来记录移动次数
    8. for(i=0;iscanf("%d",&a[i]),s+=a[i];
    9. s/=n;//平均数
    10. for(i=0;i
    11. if(a[i]>s) p+=a[i]-s;//大于平均数就累加移动次数
    12. }
    13. printf("Set #%d\nThe minimum number of moves is %d.\n\n",c++,p);
    14. }
    15. return 0;
    16. }

  • 相关阅读:
    Python运算符 成员运算符、身份运算符,三目运算符
    寻找数字零售的发展新方向,才是保证数字零售可以进入到全新发展阶段的关键
    DeepMind 的新强化学习系统是迈向通用 AI 的一步吗?
    Android Kotlin 高阶详解
    CISSP-安全与风险管理
    iperf-2.0.9 在 Linux下的编译 与 海思平台的交叉编译
    [MapStruct]枚举的映射
    数据结构--插入排序
    电脑待办事项提醒工具用哪个?
    2024比较赚钱的项目是什么?亲身经历,月入过万!
  • 原文地址:https://blog.csdn.net/qq_63739337/article/details/126458530