poj 1552 Doubles【goto语句】

  1. 云栖社区>
  2. 博客列表>
  3. 正文

poj 1552 Doubles【goto语句】

this_is_bill 2014-04-20 08:32:00 浏览539 评论0

摘要: 看了一下网上这道题的报告,大家都叫题目水。 说这道题水证明没有深入思考这道题的一种情况,有的人2次完全扫描数组也解决了这道题,那种解法不在讨论之列。 这种情况就是<1,3>组合,我开始写的是if(a[j]==a[i]*2 || (a[j]==a[i]/2 && a[i]%a[i]==0))cou...

看了一下网上这道题的报告,大家都叫题目水。

说这道题水证明没有深入思考这道题的一种情况,有的人2次完全扫描数组也解决了这道题,那种解法不在讨论之列。

这种情况就是<1,3>组合,我开始写的是if(a[j]==a[i]*2 || (a[j]==a[i]/2 && a[i]%a[i]==0))count++;这样就把这种情况算在里面了,肯定是WA了

还有就是通过了这道题会用了goto,而且知道POJ是不排斥goto语句的


上AC的代码

#include <stdio.h>

int a[20];

void dosomething(int num)//num是每一个list数的个数
{
	//test
	int i;
	/*for(i=0;i<num;i++)
		printf("%d ",a[i]);
	printf("\n");*/

	int j;
	int count=0;
	for(i=0;i<num-1;i++)
	{
		for(j=i+1;j<num;j++)
		{
			//printf("i==%d j==%d\n",i,j);
			if(a[j]==a[i]*2 || (a[j]==a[i]/2 && a[i]%2==0))
				count++;
		}
	}

	printf("%d\n",count);
}

int main()
{
	int i,tmp;
	
	while(1)
	{
		for(i=0; ;i++)
		{
			//首先输入数据
			scanf("%d",&tmp);
			if(tmp==-1)
				goto END;
				//return 0;

			if(tmp==0)
			{
				dosomething(i);
				break;
			}

			a[i]=tmp;
		}
	}
	
	END: return 0;
	//return 0;
}

【云栖快讯】阿里云栖开发者沙龙(Java技术专场)火热来袭!快来报名参与吧!  详情请点击

网友评论