http://www.bnuoj.com/bnuoj/problem_show.php?pid=1596
这个题一开始以为要求最少移动次数,把我吓到了,原来只要求最少移动几个方块就行了。。这一下就变简单很多了。。
AC代码:
#include<iostream> #include<cstdio> #include<algorithm> using namespace std; bool cmp(int a, int b) { return a<b; } int main() { int n,i,k,sum,p; int a[55]; k = 0; while(scanf("%d",&n)&&n) { k++; sum = 0; for(i = 0; i < n; i++) { scanf("%d",&a[i]); sum += a[i]; } sum = sum/n; sort(a,a+n,cmp); p = 0; for(i = 0; i < n; i++) { if(a[i] < sum) { p+=(sum-a[i]); } else { break; } } printf("Set #%d ",k); printf("The minimum number of moves is %d. ",p); } return 0; }