题目传送门:
http://acm.hdu.edu.cn/game/entry/problem/show.php?chapterid=1§ionid=2&problemid=8
本题规律在于将每个砖块的高度与现有高度作差,然后将正数部分想加即可。
#include<stdio.h>
#include<iostream>
using namespace std;
//HDU Box of Bricks
int main(){
int setNo=1;
int T=1;
int array[100]; //数组开大一点不要使用动态内存分配
scanf("%d",&T);
while(T!=0){
getchar();
int average=0;
int i=0;
int T1=T;
while(T1--){
scanf("%d",&array[i]);
average+=array[i];
i++;
}
average=average/T;
int move_times=0;
int temp=0;
for(int j=0;j<T;j++){
temp=array[j]-average;
if(temp>0)
move_times+=temp;
}
//注意再次输出空行
printf("Set #%d\nThe minimum number of moves is %d.\n\n",setNo,move_times);
scanf("%d",&T);
setNo++;
}
return 0;
}