poj 1247 Magnificent Meatballs 解题报告

题意:

S从1顺时针走,E从n逆时针走。使走到一个位置,他们正好把肉丸给完,而且给的肉丸数量相等。

思路:

水题,每次让给出的总肉丸数最少的那个人继续给,直到所有人给完。然后判断两个人给的总数是否相同。

代码:

#include <iostream>
#include
<cstdio>
#include
<cstring>
using namespace std;

int table[33];

int main()
{
//freopen("input.txt","r",stdin);
int n;
while(cin>>n,n)
{
memset(table,
0,sizeof(table));
int i;
for(i=1;i<=n;i++)
{
cin
>>table[i];
}
int sumE=0,sumS=0;
int postE=n,postS=1;
while(postS<=postE)
{
if(sumE>=sumS) {sumS+=table[postS];postS++;}
else {sumE+=table[postE];postE--;}
}
if(sumE!=sumS)
{
cout
<<"No equal partitioning."<<endl;
}
else cout<<"Sam stops at position "<<--postS<<" and Ella stops at position "<<++postE<<"."<<endl;
}
return 0;
}
posted @ 2011-06-05 11:50  andyidea  阅读(395)  评论(0编辑  收藏  举报