
たら
学生
マンガ
映画
読書
ONEPIECE
スイーツ
カラオケ
ファッション

たら
char word_list[] = "ABCCCBAACBABAEAD";
char characters[16] = {0};
int frequencies[16] = {0};
char tree_list[16][2];
char char_new[16];
int freq_new[16];
int node_count;
count(word_list, characters, frequencies, node_count);
sort_count_freq(characters, frequencies, node_count);
huff_encode(characters, frequencies, tree_list, char_new, freq_new, node_count);
}

たら
if (tree_list[t][0] == characters[p]) {
huff_code[p][t] = 0;
} else if (tree_list[t][1] == characters[p]) {
huff_code[p][t] = 1;
}
}
}for (int k = 0; k < node_count; k++) {
cout << characters[k] << ":";
for (int m = 0; m < node_count - 1; m++) {
if (huff_code[k][m] == 0 && m != 0) break; // 先頭は無視、終端のnull文字まで
cout << huff_code[k][m];
}
cout << endl;
}
}

たら
void huff_encode(char characters[], int frequencies[], char tree_list[][2], char char_new[], int freq_new[], int node_count) {
int huff_code[16][16] = {0};
make_huff(characters, frequencies, char_new, freq_new, node_count);
int idx_new = 0;
for (int t = 0; t < node_count - 1; t++) {
int left = -1, right = -1;
for (int i = 0; i < node_count; i++) {
if (char_new[i] == 'N' && i != idx_new) {
if (left == -1) left = i;
else right = i;
}
}

たら
void make_huff(char characters[], int frequencies[], char char_new[], int freq_new[], int node_count) {
int idx_new = 0;
freq_new[node_count - 2] = frequencies[node_count - 2] + frequencies[node_count - 1];
for (int i = 0; i < node_count - 2; i++) {
char_new[i] = characters[i];
}
char_new[node_count - 2] = 'N';
char_new[node_count - 1] = 'N';
for (int i = 0; i < node_count - 1; i++) {
int min1 = node_count - 2 - i;
int min2 = min1 + 1;
int new_freq = freq_new[min1] + freq_new[min2];
freq_new[min1] = new_freq;
char_new[min1] = 'N'; // 内部ノード
char_new[min2] = 'N';
// 再ソート
sort_count_freq(char_new, freq_new, node_count - 1 - i);
}
}

たら
for (int i = 0; i < size - 1; i++) {
for (int j = 0; j < size - i - 1; j++) {
if (frequencies[j] < frequencies[j + 1] ||
(frequencies[j] == frequencies[j + 1] && characters[j] > characters[j + 1])) {
int temp_freq = frequencies[j];
frequencies[j] = frequencies[j + 1];
frequencies[j + 1] = temp_freq;
char temp_char = characters[j];
characters[j] = characters[j + 1];
characters[j + 1] = temp_char;
}
}
}
for (int i = 0; i < size; i++) {
cout << characters[i] << ":" << frequencies[i] << endl;
}
}

たら

たら
何が間違いなのかわからない
タスケテ🆘
#include
using namespace std;
int count(const char word_list[], char characters[], int frequencies[], int& node_count) {
node_count = 0;
for (int i = 0; word_list[i] != '\0'; i++) {
char ch = word_list[i];
bool found = false;
for (int j = 0; j < node_count; j++) {
if (characters[j] == ch) {
frequencies[j]++;
found = true;
break;
}
}
if (!found) {
characters[node_count] = ch;
frequencies[node_count] = 1;
node_count++;
}
}
return node_count;
}

たら


たら
名前:たら
趣味:学生、マンガ、映画、読書、ONEPIECE、スイーツ、カラオケ、ファッション
気兼ねなく話せる趣味友を探しにきました!
よろしくお願いします!