1 条题解
-
0
1
#include <bits/stdc++.h> using namespace std; int n; int a[1005]; int b[1005]; int id[1005]; bool cmp(int x, int y) { if (a[x] != a[y]) return a[x] < a[y]; else if (b[x] != b[y]) return b[x] < b[y]; else return x < y; } int main() { cin >> n; for (int i = 1; i <= n; i++) { cin >> a[i] >> b[i]; id[i] = i; } //用选择排序对下标排序 for (int i = 1; i <= n; i++) for (int j = i + 1; j <= n; j++) if (!cmp(id[i], id[j])) swap(id[i], id[j]); for (int i = 1; i <= n; i++) cout << id[i] << " "; return 0; }
2
#include <bits/stdc++.h> using namespace std; int n; int a[1005]; int b[1005]; int id[1005]; int main() { cin >> n; for (int i = 1; i <= n; i++) { cin >> a[i] >> b[i]; id[i] = i; } //用选择排序进行多关键字排序 for (int i = 1; i <= n; i++) for (int j = i + 1; j <= n; j++) if (a[i] > a[j] || a[i] == a[j] && b[i] > b[j] || a[i] == a[j] && b[i] == b[j] && id[i] > id[j]) { swap(a[i], a[j]); swap(b[i], b[j]); swap(id[i], id[j]); } for (int i = 1; i <= n; i++) cout << id[i] << " "; return 0; }
3
#include <bits/stdc++.h> using namespace std; int n; struct Stu { int a, b, id; }; Stu arr[1005]; bool needSwap(Stu x, Stu y) { return x.a > y.a || x.a == y.a && x.b > y.b || x.a == y.a && x.b == y.b && x.id > y.id; } int main() { cin >> n; for (int i = 1; i <= n; i++) { cin >> arr[i].a >> arr[i].b; arr[i].id = i; } //用选择排序进行多关键字排序 for (int i = 1; i <= n; i++) for (int j = i + 1; j <= n; j++) if (needSwap(arr[i], arr[j])) swap(arr[i], arr[j]); for (int i = 1; i <= n; i++) cout << arr[i].id << " "; return 0; }
4
#include <bits/stdc++.h> using namespace std; int n; struct Stu { int a, b, id; }; Stu arr[1005]; // 返回传进来的 x,y 是否符合顺序(替代小于号 x<y) bool cmp(Stu x, Stu y) { if (x.a != y.a) return x.a < y.a; if (x.b != y.b) return x.b < y.b; return x.id < y.id; /* if (x.a < y.a) return true; if (x.a == y.a && x.b < y.b) return true; if (x.a == y.a && x.b == y.b && x.id < y.id) return true; return false; */ } int main() { // 输入 cin >> n; for (int i = 1; i <= n; i++) { cin >> arr[i].a >> arr[i].b; arr[i].id = i; } // 排序 sort(arr + 1, arr + n + 1, cmp); // 输出 for (int i = 1; i <= n; i++) cout << arr[i].id << " "; return 0; }
- 1
信息
- ID
- 1074
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 2
- 标签
- 递交数
- 79
- 已通过
- 48
- 上传者