C小加

厚德 博学 求真 至善 The bright moon and breeze
posts - 145, comments - 195, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

poj 1247 Magnificent Meatballs 解题报告

Posted on 2011-12-06 21:23 C小加 阅读(2292) 评论(0)  编辑 收藏 引用 所属分类: 解题报告

题意:

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

 


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理