English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

題目請參閱:http://www2.dmhs.kh.edu.tw/homework/q10963.htm我的程式碼如下(C++):#include#includeusing namespace std;int main(){    int n , w ,y1,y2,tmp,j;    cin >> n;    for(int i=0;i> w;        for(j=1;j<=w;j++){            cin >> y1>>y2;            if(j==1){                tmp=y1-y2;            }else{                if(abs(y1-y2)!=tmp)break;              }        }        if(j-1==w){            cout << "yes";         }else{            cout <<"no";            }        cout << endl << endl;    }        /*    system("pause");    return 0;*/}測資測過後都沒問題,但幾次送出後卻都是WA,到ACM的討論區也找不到資料請問是我哪裡沒考慮到嗎?我的判斷邏輯是紀錄第一直行的缺口大小,接著判斷其他直行的不一樣的話就會無法接合懇請指點,謝謝

2006-09-25 07:23:40 · 1 個解答 · 發問者 Anonymous in 電腦與網際網路 程式設計

1 個解答

#include < stdio.h >


int main()
{
int loop;
int W,hold,count;
int x,y,i;

scanf("%d",&loop);


while(loop--)
{
scanf("%d",&W);
count=1;
for(i=0;i {
scanf("%d %d",&x,&y);
if(i==0)
hold=x-y+1;
else{
if(hold==x-y+1)
count++;
}
}
if(count==W)
printf("yes\n");
else
printf("no\n");
if(loop>0)
printf("\n");
}
return 0;
}

以你的想法來說是對的!....
但是我的判斷方法卻是用個counter去數是否相同的次數...
如果這個次數和寬度一樣的話就是yes!

你的code改成這種做法也會AC
還有y1不會小於y2...所以你不用加abs()
詳細的問題我會再看看!如果有發現再補充!

2006-09-25 19:37:15 補充:
我發現你的錯誤了...這也是你的程式和我的程式的差別!就是你沒有把資料完全讀完就輸出結果!這樣會影響到下一筆的結果.例如:31 02 0 <---你讀到這裡就判斷no1 0 <---第三筆你還沒讀完!於是1就被讀到w...然後就一直錯下去...當然就吃WA!

2006-09-25 15:28:36 · answer #1 · answered by ? 4 · 0 0

fedest.com, questions and answers