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