#include #include #include using namespace std;

// 哈夫曼解码函数 void HuffmanDecode(char *str, char **HC, int cnt) { int len = strlen(str); int p = 0; for (int i = 0; i < len; ) { int k = 1; // 遍历哈夫曼编码表,找到匹配的编码 while (HC[k][0]) { if (str[i] == HC[k][p]) { p++; i++; } else { k++; p = 0; } } // 输出匹配到的字符 cout << char(k - 1 + 'A'); p = 0; } }

int main() { // 读入哈夫曼编码和对应的字符 int cnt; scanf("%d", &cnt); char *HC = new char[cnt + 1]; for (int i = 1; i <= cnt; i++) { HC[i] = new char[50]; scanf("%s", HC[i]); } char str[100]; scanf("%s", str); // 解码 HuffmanDecode(str, HC, cnt); // 释放内存 for (int i = 1; i <= cnt; i++) delete[] HC[i]; delete[] HC; return 0; }

// 解码程序通过遍历哈夫曼编码表,将输入的哈夫曼编码从左到右依次匹配,当匹配到一个字符的编码时,输出该字符并重新开始匹配。


原文地址: https://www.cveoy.top/t/topic/lPxs 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录