開啟章節選單
三維座標排序
題目說明
給 n 個三維空間中的座標,先用 x 座標從大到小排序,如果 x 相同,再用 y 座標從大到小排序,如果 y 相同,再用 z 座標從大到小排序。
解題過程
首先宣告整數變數 n 和陣列 b 並輸入 n
int n; vector<tuple<int, int, int>> b;
用 for
迴圈輸入 x, y, z 座標並用 make_pair()
放在陣列 b 後面
for(int i = 0;i <n ;i++){ int x, y, z; cin >> x >> y >> z; b.push_back(make_tuple(x, y, z)); }
接下來用 sort
排序
sort(b.begin(), b.end());
最後再輸出
for (int j = 0;j < n;j++){ cout << get<0>(b[j]) << " " << get<1>(b[j]) << " " << get<2>(b[j]) << endl; }
程式就完成了!
完整的程式碼如下
#include<bits/stdc++.h> using namespace std; int main(){ int n; cin >> n; vector<tuple<int, int, int>> b; for(int i = 0;i <n ;i++){ int x, y, z; cin >> x >> y >> z; b.push_back(make_tuple(x, y, z)); } sort(b.begin(), b.end()); for (int j = 0;j < n;j++){ cout << get<0>(b[j]) << " " << get<1>(b[j]) << " " << get<2>(b[j]) << endl; } return 0; }