1 条题解
-
0
C++ :
#include <bits/stdc++.h> using namespace std; const int N = 10010; int num[N], len[N]; // 总长度 int a[N], b[N], c[N]; // ABCD 的数量 int n; string s; int main() { cin >> n; for (int i = 1; i <= n; i++) { cin >> s; // 计算 abcd 的数量 for (int j = 0; j < s.size(); j++) { if (s[j] == 'A') a[i]++; else if (s[j] == 'B') b[i]++; else if (s[j] == 'C') c[i]++; } len[i] = s.size(); num[i] = i; } // 排序 for (int i = 1; i <= n - 1; i++) { for (int j = 1; j <= n - i; j++) { // 按的占比排,A相等按 B,B相等按C,c相等按长度,长度相等按编号升序 if (a[j] * len[j + 1] < a[j + 1] * len[j] || (a[j] * len[j + 1] == a[j + 1] * len[j] && b[j] * len[j + 1] < b[j + 1] * len[j]) || (a[j] * len[j + 1] == a[j + 1] * len[j] && b[j] * len[j + 1] == b[j + 1] * len[j] && c[j] * len[j + 1] < c[j + 1] * len[j]) || (a[j] * len[j + 1] == a[j + 1] * len[j] && b[j] * len[j + 1] == b[j + 1] * len[j] && c[j] * len[j + 1] == c[j + 1] * len[j] && len[j] < len[j + 1]) || (a[j] * len[j + 1] == a[j + 1] * len[j] && b[j] * len[j + 1] == b[j + 1] * len[j] && c[j] * len[j + 1] == c[j + 1] * len[j] && len[j] == len[j + 1] && num[j] > num[j + 1])) { swap(a[j], a[j + 1]); swap(b[j], b[j + 1]); swap(c[j], c[j + 1]); swap(len[j], len[j + 1]); swap(num[j], num[j + 1]); } } } for (int i = 1; i <= n; i++) { cout << num[i] << " "; } return 0; }
- 1
信息
- ID
- 1023
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 10
- 标签
- 递交数
- 3
- 已通过
- 3
- 上传者