看板 C_and_CPP 關於我們 聯絡資訊
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 題號: 10611 題目: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=18&page=show_problem&problem=1552 遇到的問題: WA... 有問題的code: (請善用置底文的標色功能) #include<stdio.h> #include<stdlib.h> int bsearch(int *a,int l,int r,int key) { while(l<r) { int mid=(l+r)/2; if(key==a[mid]) return mid; else if(key>a[mid]) l=mid+1; else r=mid-1; } if(a[l]>key) return l; else return l+1; } int main() { int N,Q,*h1,*h2,i,j,result,middle,time=0; scanf("%d",&N); h1=(int*)malloc(sizeof(int)*N); for(i=0;time!=N;i++) { scanf("%d",&h1[i]); time++; if(h1[i]==h1[i-1]) i--; } N=i; scanf("%d",&Q); h2=(int*)malloc(sizeof(int)*Q); for(i=0;i<Q;i++) scanf("%d",&h2[i]); for(i=0;i<Q;i++) { if(h2[i]>h1[N-1]) printf("%d X\n",h1[N-1]); else if(h2[i]<h1[0]) printf("X %d\n",h1[0]); else if(h2[i]==h1[N-1]) { if(N-2>=0) printf("%d X\n",h1[N-2]); else printf("X X\n"); } else if(h2[i]==h1[0]) { printf("X %d\n",h1[1]); } else { result=bsearch(h1,0,N-1,h2[i]); if(h1[result]==h2[i]) printf("%d %d\n",h1[result-1],h1[result+1]); else printf("%d %d\n",h1[result-1],h1[result]); } } system("pause"); return 0; } 補充說明: -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.117.180.29
QQ29:WA? 03/10 00:34
loveme00835:你在存母猴身高的時候已經把重複身高的給去掉, 所以有 03/10 00:46
loveme00835:可能最大的身高不是存在h1[ N - 1 ]裡 03/10 00:46
loveme00835:阿, 少看一行@@ 03/10 00:47
loveme00835:很好奇為什麼else if(h2[i]==h1[0]) 裡面沒有兩個case 03/10 00:51
ohya0524:樓上大大有發現問題嗎...WA十幾次...我的頭好暈 03/10 01:01
loveme00835:問一個問題 : l、r重合會怎樣? XD 03/10 01:08