HOJ 2991 [cpp] //思路:用sscanf截取字符串轉化為數字,然後找最大的和最小的輸出即可 //hint:輸出的時候一定要輸出char類型的, // And the format should be the same as the input, especially for the format of the numbers! // (這個應該是題目中給的對輸出要求的提示信息) //測試: //1 //4 //(1,5) (0.5,5) (1,4) (0.5,4) #include <iostream> #include<cstdio> #define maxlen 110 using namespace std; struct node { double x; double y; } array[maxlen],m; int main() { int N,n,i,ma; char s[maxlen][maxlen]; cin >> N; while(N--) { cin >> n; for(i=0; i<n; i++) { cin >> s[i]; sscanf(s[i], "(%lf,%lf)", &array[i].x, &array[i].y); //用sscanf直接截取字符串將char類型的數字轉化為double的存在結構體中 } m.x=array[0].x; m.y=array[0].y; ma=0; for(i=1; i<n; i++) { if(array[i].y>m.y) { ma=i; m.y=array[i].y; m.x=array[i].x; } if(array[i].y==m.y) { if(array[i].x<m.x) { ma=i; m.y=array[i].y; m.x=array[i].x; } } }//ma用來記錄找到的y最大且x最小的下標 cout << s[ma] << " "; m.x=array[0].x; m.y=array[0].y; ma=0; for(i=0; i<n; i++) { if(array[i].y<m.y) { ma=i; m.y=array[i].y; m.x=array[i].x; } if(array[i].y==m.y) { if(array[i].x<m.x) { ma=i; m.y=array[i].y; m.x=array[i].x; } } }//ma用來記錄找到的y最小且x最小的下標 cout << s[ma] << endl; } return 0; }