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

  • 相关阅读:
    docker简介
    python 基于PHP+MySQL的学生成绩管理系统
    Date日期类
    分享从零开始学习网络设备配置--2.1 交换机基本配置
    【Spring底层原理高级进阶】Spring Kafka:实时数据流处理,让业务风起云涌!️
    操作系统中的(进程,线程)
    vite下,修改node_modules源码后,在浏览器源码中看不到改动的内容
    数据结构与算法-第八章 插入排序
    微店关键词取商品列表API接口(item_search-根据关键词取商品列表API接口),微店API接口
    使用Node构建私人代理池
  • 原文地址:https://blog.csdn.net/qq_63739337/article/details/126458530