• 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. }

  • 相关阅读:
    XML外部实体漏洞 (XXE)简介
    经典算法-枚举法(百钱买百鸡问题)
    Windows和Linux定时文件传输
    MyBatis - 一旦执行到打印日志 Parameter 就卡死的原因探索
    跟着官方文档学习axios
    计算机毕业设计springboot+vue+elementUI企业制度管理系统
    【WGS84坐标系】经纬度高度转换为WGS84坐标系对应的坐标值
    开始SpringCloud
    从1开始的Matlab(快速入门)
    flink集群与资源@k8s源码分析-资源III 声明式资源管理
  • 原文地址:https://blog.csdn.net/qq_63739337/article/details/126458530