9砖盒

来源:互联网 发布:怎么样学数据库 编辑:程序博客网 时间:2024/05/21 09:10

小 Bob 喜欢玩砖盒。他把砖块一个叠一个地堆成不同高度的盒子。“看,我堆了一堵墙!”他告诉他的大姐姐Alice。“嗯,你该把所有的砖盒建得一样高。这样,你就建成了一堵真正的墙。”她回答。思索了一会,小Bob 认为她是对的。然后,他就开始重新摆放砖盒,一块接一块,最后,所有的砖盒都一样高了。但Bob 很懒,他想只移动最少数目的砖块来使所有的砖盒一样高。你能帮助他吗?

2.输入描述

输入包含多个数据集合。每个数据集合的第一行是一个整数 n,表示该Bob 建的砖盒个数。第二行则包含n 个整数,每个整数代表每个砖盒的高度hi,表示该砖盒中有hi 块砖。假定1≤n≤50,1≤hi≤100。砖块的总数目能被砖盒的数目整除。因此,一定能把各个砖盒移成相同的高度。输入以 0 结束。不要处理0。

3.输出描述

对于每个数据集,先打印出该数据集的序号,请参考输出样例。然后打印这样一行“The minimum number of moves is k.”。这里,k 指把这些砖盒移到同一高度所需的最小次数。在每个数据集后输出一个空行

4.输入样例
6
5 2 4 1 7 5
0
5.输出样例
Set #1

The minimum number of moves is 5.

#include "stdafx.h"#include<fstream>#include<iostream>#include<vector>using namespace std;int  _tmain(int argc, _TCHAR* argv[]){ifstream in("D:\\visual studio 2013 code\\test.txt");vector<int>v;int num;int avg;int row  = 0;while (in >> num){if (num == 0) break;v.clear();row ++;int temp;int sum = 0;int act = 0;for (int i = 0; i < num;i++){in >> temp;v.push_back(temp);sum += temp;}avg = sum / num;for (int j = 0; j < v.size(); j++){if (v[j]>avg) act += (v[j] - avg);}cout << "set #" << row << endl;cout << "the minimum number of moves is" << act << endl;}return 0;}



0 0