Professional Documents
Culture Documents
#include<bits/stdc++.h>
using namespace std;
int main()
{
freopen("input.txt","r",stdin) ;
freopen("output.txt","w",stdout);
string code;
cout<<"Enter the Code: ";
cin>>code;
cout<<"Run Length Encoding is: ";
for(int i=0;i<code.size();i++)
{
char ch=code[i];
int cnt=0;
while(i<code.size() && code[i]==ch)
{
cnt++, i++;
}
i--;
cout<<cnt<<ch;
}
cout<<endl;
}
Input: AAABBBBCDDDDDDEEE
Output: Enter the Code: Run Length Encoding is: 3A4B1C6D3E
LZW Code
#include<bits/stdc++.h>
using namespace std;
int main()
{
fileinput
fileoutput
string s;
cin>>s;
set<char>ch;
for(char x:s)ch.insert(x);
map<string,int>mp;
int cnt=1;
for(char x:ch)
{
string ss;
ss+=x;
mp[ss]=cnt;
cnt++;
}
//for(auto it:mp)cout<<it.first<<" "<<it.second<<endl;
string ss="";
ss+=s[0];
vector<int>ans;
for(int i=1;i<s.size();i++)
{
int f=mp[ss];
ss+=s[i];
if(mp[ss]==0)
{
mp[ss]=cnt;
cnt++;
ans.push_back(f);
ss="";
ss+=s[i];
}
}
//cout<<ss<<endl;
//cout<<mp[ss]<<endl;
ans.push_back(mp[ss]);
for(int i=0;i<ans.size();i++)cout<<ans[i]-1;
cout<<endl;
}
Input: BAABABBBAABBBBAA
Output: 1002163670
Huffman Code
#include<bits/stdc++.h>
using namespace std;
#define fileinput freopen("input.txt","r",stdin) ;
#define fileoutput freopen("output.txt","w",stdout);
struct Node
{
char ch;
int freq;
Node *left, *right;
};
Node* getNode(char ch, int freq, Node* left, Node* right)
{
Node* node = new Node();
node->ch = ch;
node->freq = freq;
node->left = left;
node->right = right;
return node;
}
struct comp
{
bool operator()(Node* l, Node* r)
{
return l->freq > r->freq;
}
};
void encode(Node* root, string str,map<char, string> &huffmanCode)
{
if (root == nullptr)
return;
int main()
{
fileinput
fileoutput
//string text = "Huffman coding is a data compression algorithm.";
string text;
getline(cin,text);
buildHuffmanTree(text);
return 0;
}
Input: ABCDE
Output: Huffman Codes are : 010011110110
Diatomic Code
#include<bits/stdc++.h>
using namespace std;
int main()
{
fileinput
fileoutput
string s;
getline(cin,s);
map<string,int>mp;
stringstream ss(s);
string word;
while(ss>>word)
{
for(int i=0; i<word.size()-1; i++)
{
string x;
x+=word[i];
x+=word[i+1];
mp[x]++;
}
}
vector<pair<int,string> > v;
for(auto it:mp)
{
v.push_back({it.second,it.first});
}
sort(v.begin(),v.end());
char ch='0';
map<string,char>spchar;
for(int i=v.size()-1; i>=0; i--)
{
spchar[v[i].second]= 'a' + ch;
ch++;
}
string ans = s;
for(int i=v.size()-1; i>=0; i--)
{
string par=v[i].second;
map<int,int>mp1;
for(int j=0; j<ans.size()-1; j++)
{
string x;
x+=ans[j];
x+=ans[j+1];
//cout<<x<<" ";
if(x==par)
{
mp1[j]=1;
j++;
}
}
string ans1="";
for(int j=0; j<ans.size(); j++)
{
if(mp1[j]!=1)ans1+=ans[j];
else
{
string x;
x+=ans[j];
x+=ans[j+1];
ans1+=spchar[x];
j++;
}
}
ans=ans1;
}
cout<<ans<<endl;
}