Kattis - sortofsorting 【排序】

mac2022-06-30  26

题意 给出一系列字符串,然后要排序 排序规则 只按前两位按字典序来排序,如果前两位完全一样,则按输入的顺序来排

思路

要用 冒泡排序 不能用STL里面的 SORT 因为它不稳定

AC代码

#include <cstdio> #include <cstring> #include <ctype.h> #include <cstdlib> #include <iostream> #include <algorithm> #include <cmath> #include <deque> #include <vector> #include <queue> #include <string> #include <map> #include <stack> #include <set> #include <numeric> #include <sstream> using namespace std; typedef long long LL; const double PI = 3.14159265358979323846264338327; const double E = 2.718281828459; const double eps = 1e-6; const int MAXN = 0x3f3f3f3f; const int MINN = 0xc0c0c0c0; const int maxn = 1e2 * 2 + 5; const int MOD = 1e9 + 7; struct Node { string s; int a, b; }temp; int comp(Node x, Node y) { if (x.a == y.a && x.b != y.b) return x.b > y.b; else if(x.a != y.a) return x.a > y.a; else if (x.a == y.a && x.b == y.b) return 0; } int main() { int n; int Case = 0; while (cin >> n && n) { if (Case++) printf("\n"); vector <Node> v; v.clear(); for (int i = 0; i < n; i++) { cin >> temp.s; temp.a = temp.s[0]; temp.b = temp.s[1]; v.push_back(temp); } for (int i = 1; i < n; i++) { for (int j = 0; j < n - i; j++) { if (comp(v[j], v[j + 1])) swap(v[j], v[j + 1]); } } for (int i = 0; i < n; i++) cout << v[i].s << endl; } }

转载于:https://www.cnblogs.com/Dup4/p/9433281.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)