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