现在的位置: 首页 > 综合 > 正文

POJ1247

2018年04月05日 ⁄ 综合 ⁄ 共 703字 ⁄ 字号 评论关闭
#include "iostream"
using namespace std;

int main(void)
{
	unsigned short ToEachHave[30];
	unsigned short EachHave[30];
	unsigned short NumOfGuest;
	while( (cin >> NumOfGuest) && NumOfGuest )
	{

		unsigned short TotalOfMts = 0;
		for( size_t ix = 0 ; ix != NumOfGuest ; ix ++ )
		{
			cin >> EachHave[ix];
			TotalOfMts += EachHave[ix];
			ToEachHave[ix] = TotalOfMts;
		}
		if( (TotalOfMts % 2) != 0)
		{
			cout << "No equal partitioning." << endl;
		}
		else
		{
			for( size_t id = 0 ; id != NumOfGuest ; id ++ )
			{
				if( ToEachHave[id] == (TotalOfMts >> 1))
				{
					cout << "Sam stops at position " << id + 1 << " and Ella stops at position " << id + 2 << "." << endl;
					break;
				}
				if(ToEachHave[id] > (TotalOfMts >> 1))
				{
					cout << "No equal partitioning." << endl;
					break;
				}
			}
		}
	}
	return 0;
}

既然最后要相等则必然可以凭借分成两份,也就是说总的肉丸数目为偶数才能均分,建立数组分别记录1-n号位分发的肉丸总数,一旦有刚好等于一半的则输出位置并且退出,若有一个值大于一半则输出不能满足任何退出。

【上篇】
【下篇】

抱歉!评论已关闭.