閱讀113 返回首頁    go 阿裏雲 go 技術社區[雲棲]


poj 1247 Magnificent Meatballs

這道題主要就是先理解題意就成功了一大半。。。很水的題目

題意:就是求當兩個人按順時針方向和按逆時針方向放置肉丸子後,當兩個人肉丸子相等時所處的位置。

按以下順序考慮:

1.如果肉丸的總數是奇數,那就不用往下考慮了,一定不行

2.把總數除以2,然後從host(N=1)開始sum-=seat【i】,一旦sum==0,證明成功;小於0,失敗;否則就繼續循環。。。

一個很簡單的數學問題,我看到網上有寫O(n^2)的代碼的,不知道怎麼考慮的。。。


AC的代碼:

#include <stdio.h>

int main()
{
	int n;
	int seat[35];
	int i;
	while(scanf("%d",&n))
	{
		if(n==0)
			return 0;

		int sum=0;
		for(i=1;i<=n;i++)
		{
			scanf("%d",&seat[i]);
			sum+=seat[i];
		}

		if(sum%2)  
        {
			printf("No equal partitioning.\n");
            continue;
        }

		else
			sum/=2;

		for(i=1; ;i++)
		{
			sum-=seat[i];

			if(sum==0)
            {
                printf("Sam stops at position %d and Ella stops at position %d.\n",i,i+1);
                break;  
            }

            else if(sum<0)
            {
                    printf("No equal partitioning.\n");
                    break;
            }
		}
	}

	return 0;
}


最後更新:2017-04-03 14:53:53

  上一篇:go 保持android持續開亮
  下一篇:go poj 1338 Ugly Numbers【終極打表】