POJ 1247 Magnificent Meatballs(水~)

Description
一个圆桌,一堆数字,S顺时针走,E逆时针走,走过每个数字时就把数字加起来,问2个人在哪里相遇时他们的加和相同
Input
多组测试用例,每组用例第一个整数n(2<=n<=30)表示圆桌上数字个数,后面n个整数表示数值,以n=0结束输入
Output
如果两人可以相遇则输出两人相遇时的位置,否则输出No equal partitioning.
Sample Input
5 9 4 2 8 3
5 3 9 4 2 8
6 1 2 1 2 1 2
6 1 2 1 2 1 1
0
Sample Output
Sam stops at position 2 and Ella stops at position 3.
No equal partitioning.
No equal partitioning.
Sam stops at position 3 and Ella stops at position 4.
Solution
水题,计算所有数字的总和,如果不能被2整除 则不可能存在;如果存在则从a1累加,如果找到ai时有等于sum的一半并且n>i就输出i和i+1 不然就输出找不到
Code

#include<stdio.h>

int main()
{
    int n,a[30],i,j,count;
    scanf("%d",&n);
    while(n!=0)
    {
        count=0;
        for(i=0;i<n;i++)
        {
            scanf("%d",&a[i]);
            count+=a[i];
        }
        if(count%2!=0)//总数不能被2整除,必然不能相遇 
            printf("No equal partitioning.\n");
        else
        {
            count/=2;
            for(i=0;i<n&&(count=count-a[i])>0;i++);
            if(count==0)//可以相遇 
                printf("Sam stops at position %d and Ella stops at position %d.\n",i+1,i+2);
            else//不能相遇 
                printf("No equal partitioning.\n");
        }
        scanf("%d",&n);
    }
} 

你可能感兴趣的:(POJ 1247 Magnificent Meatballs(水~))