三維座標排序

題目說明

給 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;
}