9砖盒

小 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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值