zoukankan      html  css  js  c++  java
  • 摆积木

    题目描述

    zzq很喜欢玩积木。一天,他把许多积木块组成了好多高度不同的堆,每一堆都是一个摞一个的形式。然而此时,他又想把这些积木堆变成高度相同的。但是他很懒,他想移动最少的积木块来实现这一目标,你能帮助他吗?

    输入

    输入包含多组测试样例。每组测试样例包含一个正整数n,表示zzq已经堆好的积木堆的个数。
    接着下一行是n个正整数,表示每一个积木堆的高度h,每块积木高度为1。其中1<=n<=50,1<=h<=100。
    测试数据保证积木总数能被积木堆数整除。
    当n=0时,输入结束。

    输出

    对于每一组数据,输出将积木堆变成相同高度需要移动的最少积木块的数量。
    在每组输出结果之间输出一个空行。

    样例输入

    6
    5 2 4 1 7 5
    0

    样例输出

    5
     

    题意概括:

    求出将所有积木堆的高度都变为相同需要移动的最少次数。

    题意分析:

    求出所有积木堆的平均高度,然后用所有高于或低于平均高度的积木堆减去平均高度或用平均高度减去积木堆高度(每一个都要计算),最后所有差的和就是最终结果。
     

    代码:

     1 #include<stdio.h>
     2 #include<string.h>
     3 
     4 int main()
     5 {
     6     int i,n, sum, k,flag=1;
     7     int a[55];
     8     while(scanf("%d", &n), n != 0){
     9         sum = k = 0;
    10         for(i = 0; i < n; i++){
    11             scanf("%d", &a[i]);
    12             sum += a[i];
    13         }
    14         k = sum / n;
    15         for(i = 0, sum = 0; i < n; i++){
    16             if(a[i] > k)
    17                 sum += (a[i]-k);
    18         }
    19         if(flag != 1)
    20             printf("
    ");
    21         printf("%d
    ", sum);
    22         flag++;
    23     }
    24     return 0;    
    25 } 
  • 相关阅读:
    SmartDb代码修改
    windows下Nginx+RTMP部署
    嵌入式linux下获取flash分区大小
    (转)Qt添加windows开机自启动
    (转)交叉编译lrzsz
    关于海思SDK在Ubuntu下安装错误问题
    电总协议串口调试助手
    使用git将本地仓库上传到远程仓库(转)
    c++中包含string成员的结构体拷贝导致的double free问题
    59. 可变参数
  • 原文地址:https://www.cnblogs.com/didideblog/p/7221268.html
Copyright © 2011-2022 走看看