60分代码如下
#include <bits/stdc++.h>
using namespace std;
string ch = "0123456789ABCDEF", s;
int n, m, a[20][20], t[256], c[16], cpa[20][20];
inline int tran(char cha) {
if(cha <= '9')return cha - 48;
return cha - 55;
}
inline int compress(int co) {
int dis = 256, id = -1;
for (int i = 0; i < 16; i++) {
int d = abs(co - c[i]);
if (d < dis)dis = d, id = i;
}
return id;
}
int main() {
for (int i = 0; i < 256; i++)t[i] = -1;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> s, m = s.size() >> 1;
for (int j = 0; j < m; j++)
a[i][j] = (tran(s[j << 1])) * 16 + tran(s[j << 1 | 1]), t[a[i][j]]++;
}
for (int i = 0; i < 16; i++) {
int max = 0, id = -1;
for (int j = 0; j < 256; j++)
if(t[j] > max)max = t[j], id = j;
c[i] = id, t[id] = -1;
}
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
cpa[i][j] = compress(a[i][j]);
for (int i = 0; i < 16; i++)
cout << ch[c[i] / 16] << ch[c[i] % 16];
for (int i = 0; i < n; i++) {
cout << '\n';
for (int j = 0; j < m; j++)cout << ch[cpa[i][j]];
}
return 0;
}