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

  • 相关阅读:
    CGAL 计算点云平均密度
    【毕业设计】单片机远程wifi红外无接触体温测量系统 - 物联网 stm32
    突破开源天花板!最强文本转语音工具ChatTTS:对话式高可控的语音合成模型
    vscode交叉编译cmake工程,toolchains设置
    快速排序和归并排序的非递归形式
    人工智能:ChatGPT与其他同类产品的优缺点对比
    【电路笔记】-诺顿定理(Norton‘s Theorem)
    定时任务job (现成直接用)
    【C语言】指针传参引发的相关问题
    Redisson批量操作类RBuckets和管道利器RBatch
  • 原文地址:https://blog.csdn.net/qq_63739337/article/details/126458530