0分有RE,不知道咋改
查看原帖
0分有RE,不知道咋改
1228547
Jasper111楼主2024/4/3 18:09
#include <bits/stdc++.h>
using namespace std;
int n, pa[20][20];
string b[23], bh;
int ji;
char da;
struct great
{
	string name;
	int bai;
	int cs;
	char ttt;
} a[257];
int slzs(string p)
{
	int sum = 0;
	if (p[1] >= '0' && p[1] <= '9')
		sum += p[1] - '0';
	else
		sum += p[1] - 'A' + 10;
	if (p[0] >= '0' && p[0] <= '9')
		sum += (p[0] - '0') * 16;
	else
		sum += (p[0] - 'A' + 10) * 16;
	return sum;
}
void z(string bh, int x, int y)
{
	int t = slzs(bh);
	a[t].cs++;
	a[t].name = bh;
	pa[x][y] = t;
}
bool pai(great x, great y)
{
	if (x.cs != y.cs)
		return x.cs > y.cs;
	else
		return x.bai < y.bai;
}
int main()
{
	cin >> n;
	for (int i = 0; i < 256; i++)
		a[i].cs = 0, a[i].bai = i;
	for (int i = 1; i <= n; i++)
	{
		cin >> b[i];
		for (int j = 0; j < b[i].size(); j += 2)
		{
			bh = b[i][j], bh += b[i][j + 1];
			z(bh, i, j / 2);
			bh = "";
		}
	}
	sort(a, a + 256, pai);
	for (int i = 0; i < 16; i++)
	{
		cout << a[i].name;
		a[i].ttt = '0' + i;
		if (a[i].ttt > '9')
			a[i].ttt = 'A' + (i - 10);
	}
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < b[i].size() / 2; j++)
		{
			ji = 1000;
			da = ' ';
			for (int k = 0; k < 16; k++)
			{
				if (abs(pa[i][j] - a[k].bai) < ji)
					ji = abs(pa[i][j] - a[k].bai), da = a[k].ttt;
			}
			cout << da;
		}
		cout << endl;
	}
	return 0;
}
2024/4/3 18:09
加载中...