[模板]哈夫曼树
来源:互联网 发布:卧蚕和眼袋的区别知乎 编辑:程序博客网 时间:2024/06/11 04:02
#include <stdio.h>#include <algorithm>using namespace std;struct arr{ int data,lc,rc,addr;};arr f[1000],a[1000];int cam(arr a,arr b){ return a.data<b.data;}int vist(int x){ if (f[x].data==0) return 0; printf("%d ",f[x].data); vist(f[x].lc); vist(f[x].rc); return 0;}int main(){ int n; scanf("%d",&n); for (int i=1;i<=n;i++) { scanf("%d",&a[i].data); f[i].data=a[i].data; a[i].addr=i; } int t=n+1,i=n; while (i>1) { sort(a+1,a+i+1,cam); f[t].data=a[1].data+a[2].data; f[t].lc=a[1].addr; f[t].rc=a[2].addr; a[1].data=f[t].data; a[1].addr=t; a[2].data=a[i].data; a[2].addr=a[i].addr; t++; i--; } vist(t-1);}
哈夫曼编码
#include <stdio.h>#include <algorithm>#include <string>using namespace std;struct arr{ int data,lc,rc,addr,l;};arr f[1000],a[1000];int cam(arr a,arr b){ return a.data<b.data;}int vist(int x,string ch){ if (f[x].data==0) return 0; vist(f[x].lc,ch+"0"); vist(f[x].rc,ch+"1"); if (f[x].lc==0&&f[x].rc==0) printf("%d:%s\n",f[x].data,ch.c_str()); return 0;}int main(){ int n; scanf("%d",&n); for (int i=1;i<=n;i++) { scanf("%d",&a[i].data); f[i].data=a[i].data; a[i].addr=i; } int t=n+1,i=n; while (i>1) { sort(a+1,a+i+1,cam); f[t].data=a[1].data+a[2].data; f[t].lc=a[1].addr; f[t].rc=a[2].addr; a[1].data=f[t].data; a[1].addr=t; a[2].data=a[i].data; a[2].addr=a[i].addr; t++; i--; } char st[100]; vist(t-1,"");}
2 0
- [模板]哈夫曼树
- java实现哈夫曼树模板
- 8069---哈夫曼树--模板
- 【模板】哈夫曼树构造
- C++模板实现哈夫曼树
- 模板
- 模板?
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- Spring-data-mongodb 连接 MongoDB 3.x 版本的XML文件配置
- ElasticSearch.net NEST批量创建修改删除索引完整示例
- 守护(Daemon)线程
- JREBEL 7.0 注册 激活
- noip2016游记
- [模板]哈夫曼树
- 自定义Toast实现自定义Toast布局
- 第13天 StringBuffer、Math类、日期类、自定义线程
- C++之vector的使用
- YOLO:You Only Look Once运行记录(Ubuntu14.04+GT750M)
- SVG文字缩放(文字多的时候不兼容火狐和IE)
- js与jquery实时监听输入框值的oninput与onpropertychange方法
- 那些我在jsp自定义标签中犯过的拼写错误
- AES加密