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;
}