POJ1247

来源:互联网 发布:阿里云服务器公网ip 编辑:程序博客网 时间:2024/06/03 21:03
#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号位分发的肉丸总数,一旦有刚好等于一半的则输出位置并且退出,若有一个值大于一半则输出不能满足任何退出。