poj 1552 Doubles【goto语句】
看了一下网上这道题的报告,大家都叫题目水。
说这道题水证明没有深入思考这道题的一种情况,有的人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;
}
最后更新:2017-04-03 12:56:20