本題為 Brute Force 可以迅速解題。 題目給予一些二維座標,求是否所有點左右對稱。 看似簡單,但需要注意以下幾點,不然很容易拖掉 Debug 時間。 1. scanf 讀取輸入的時候,遇到自定義的 struct,不必遲疑,直接把 “&” 寫在前面: scanf("%d %d", &a[i].x, &a[i].y); 2. 取 x 最大值和最小值,相加當作中點,不需要除以 2,避免出現浮點數問題。 3. x_min 和 x_max 取完,要馬上回歸初始值。x_min 初始值要是很大的值,x_max 初始值是很小的值。 4. 要考慮座標有可能落在對稱線上,for 迴圈掃過所有點,某一點自己也可以跟自己取中點來做判斷。 完整程式碼: // This code is created by EdocZec on 2020/01/25 #include <bits/stdc++.h> #define _for(i,a,b) for(int i=(a); i<(b); ++i) // this has been verified and can work correctly. #define _dbg(arr,n) _for(i,0,n){cout << " [Debug] arr[" << i << "] = " << (arr)[i] << endl;} // this has been verified and can work correctly. using namespace std; struct point { int x; int y; }; point a[4000]; int main(int argc, char** argv) { int case_num; scanf("%d", &case_num); _for(i,0,case_num) ...
Coding for Passion, Solving Problems