信息论上学习了fano编码,所以就尝试着自己写一遍fano编码
#include "iostream"
#include <fstream>
#include "map"
#include "string"
#include "math.h"
using namespace std;
multimap<float, pair<string, string>> W;
void show(multimap<float, pair<string, string>> word);
typedef decltype(W.begin()) map_pointer;
int initial(string file_name, int max){
float probability = 0, temp = 0;
string str = "";
ifstream infile;
infile.open(file_name, ios::in);
for (int i = 0; i < max; ++i){
infile >> temp >> str;
probability += temp;
W.insert({ temp, make_pair(str, "") });
}
if ((probability - 1) < 0.0001){
return 1;
}else{
cout << "Sum of probability != 1" << endl;
return 0;
}
}
int make_code(map_pointer high_pointer, map_pointer low_pointer){
float high_value = high_pointer->first, low