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