• 摆积木


    题目描述

    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 } 
  • 相关阅读:
    Linq调试实时输出信息扩展方法(摘抄)
    RSA签名和验证数据
    Vue+abp微信扫码登录
    vue学习笔记4
    icon共享网站 可以获得wpf里用的Geometry
    wpf 父控件和子控件 各自触发鼠标按下事件
    C# Timespan Tostring 时分秒格式
    新公司第二天
    C# 反转单向链表
    经纬度转数字经纬度时,如果是负数
  • 原文地址:https://www.cnblogs.com/didideblog/p/7221268.html
Copyright © 2020-2023  润新知