全RE,错在哪里了?
查看原帖
全RE,错在哪里了?
1206388
pengjingfei267楼主2024/10/28 19:30
#include <bits/stdc++.h>
using namespace std;
int n;
char s[30][30];

struct grey {
	pair<char, char>cl;
	int cnt;
} gr[256];
map<pair<char, char>, bool>bct;
map<pair<char, char>, pair<char, int>>mp;

void initgrey() {
	for (int i = 0; i < 256; i++) {
		gr[i].cnt = 0;
	}
	return;
}

int st_t(pair<char, char>st) {
	int sl = st.first >= 0 && st.first <= 9 ? st.first - '0' : st.first - 'A' + 10;
	int gl = st.second >= 0 && st.second <= 9 ? st.second - '0' : st.second - 'A' + 10;
	return sl * 16 + gl;
}

char t_st(int t) {
	return t < 10 ? t + '0' : t - 10 + 'A';
}

bool cmp(grey p1, grey p2) {
	return p1.cnt == p2.cnt ? st_t(p1.cl)<st_t(p2.cl): p1.cnt>p2.cnt;
}

int main() {
	cin >> n;
	initgrey();
	for (int i = 0; i < n; i++) {
		cin >> s[i];
		for (int j = 0; j < strlen(s[i]); j += 2) {
			pair<char, char>gr16 = make_pair(s[i][j], s[i][j + 1]);
			int gr10 = st_t(gr16);
			gr[gr10].cl = gr16;
			gr[gr10].cnt++;
		}
	}
	sort(gr, gr + 256, cmp);
	for (int i = 0; i < 16; i++) {
		cout << gr[i].cl.first, gr[i].cl.second;
		char ch = t_st(i);
		mp[gr[i].cl] = make_pair(ch, st_t(gr[i].cl));
		bct[gr[i].cl] = true;
	}
	for (int i = 0; i < n; i++) {
		cout << endl;
		for (int j = 0; j < strlen(s[i]); j += 2) {
			pair<char, char>str = make_pair(s[i][j], s[i][j + 1]);
			if (bct[str]) {
				cout << mp[str].first;
			} else {
				int t1 = st_t(str), d_min = 260;
				char ch;
				for (int k = 0; k < 16; k++) {
					int d = abs(st_t(gr[k].cl) - t1);
					if (d < d_min) {
						d_min = d;
						ch = t_st(k);
					}
				}
				cout << ch;
			}
		}
	}
	return 0;
}

rt,大佬们帮忙看看 (@ZsH68112zSh,你的题解到底行不行啊?)

2024/10/28 19:30
加载中...