求助60分
  • 板块学术版
  • 楼主wangzh1207
  • 当前回复5
  • 已保存回复5
  • 发布时间2023/9/10 13:45
  • 上次更新2023/11/2 21:39:26
查看原帖
求助60分
944447
wangzh1207楼主2023/9/10 13:45
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
ll image[20][20],cpimg[20][20],his[256],color[16];
int trans(char a) 
{
    if(a <= '9') return a-'0';
    return a-'A'+10;
}
char itrans(int n) 
{
 
    if (n >= 10) return (char)n - 10 + 'A';
    return (char)n + '0';
}
int compress(int c) 
{
    int dis = 256, res = -1;
    for (int i = 0; i < 16; i++) 
	{
        int d = c - color[i];
        if (d < 0) d = -d;
        if (d < dis) 
		{
            dis = d;
            res = i;
        }
    }
    return res;
}
int main() 
{
    ll N = 0, M = 0;
    cin >> N;
    for (ll i = 0; i < 256; i++) his[i] = -1;
    for (ll i = 0; i < N; i++) 
	{
        char line[50];
        cin >> line;
        M = strlen(line) / 2;
        for (int j = 0; j < M; j++) 
		{
            int c = trans(line[j * 2]) * 16 + trans(line[j * 2 + 1]);
            image[i][j] = c;
            his[c]++;
        }
    }
    for (int c = 0; c < 16; c++) 
	{
        int max = 0, max_id = -1;
        for (int i = 0; i < 256; i++)
        {
            if (his[i] > max) 
			{
                max = his[i];
                max_id = i;
            }
        }
        color[c] = max_id;
        his[max_id] = -1;
    }
    for (int i = 0; i < N; i++)
        for (int j = 0; j < M; j++)
            cpimg[i][j] = compress(image[i][j]);
    for (int c = 0; c < 16; c++) cout << itrans(color[c] / 16) << itrans(color[c] % 16);
    cout << endl;
    for (int i = 0; i < N; i++) 
	{
        for (int j = 0; j < M; j++) cout << itrans(cpimg[i][j]);
        cout << endl;
    }
    return 0;
}

不知该代码有何bug,只有60分

2023/9/10 13:45
加载中...