您的位置:首页 > 编程语言 > Go语言

poj 1552 Doubles【goto语句】

2014-04-20 08:32 232 查看
看了一下网上这道题的报告,大家都叫题目水。

说这道题水证明没有深入思考这道题的一种情况,有的人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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: