贪心算法-Huffman算法2-错误改进
2012-10-01 14:15
169 查看
选出最小和次小
p1=p2=0; //相关变量赋初值 min1=min2=1000;//相当于一个大数 for(j=0;j<n+i;j++) { if(pht->ht[j].parent==0) { if(pht->ht[j].weight<min1) { min1=pht->ht[j].weight; p1=j; } } } for(j=0;j<n+i;j++) { if(pht->ht[j].parent==0) { if((pht->ht[j].weight>min1)&&(pht->ht[j].weight<=min2)&&(j!=p1)) { min2=pht->ht[j].weight; p2=j; } } }
使用flag分派字符串大小
for(int i=0;i<n;i++)
{ flag=0; //start=n-1; //k,f是两个工作指针,f指向k的父亲 for(int k=i,f=pht->ht[i].parent;f!=0;k=f,f=pht->ht[k].parent) { flag++; //左边分配0,右边分配1 } //--------------- c=(char*)malloc(sizeof(char)*(flag)); c[flag]='\0'; for(int k=i,f=pht->ht[i].parent;f!=0;k=f,f=pht->ht[k].parent) { if(pht->ht[f].lchild==k) { c[--flag]='0'; } else { c[--flag]='1'; } } //为第i个字符编码分配空间 //因为路径有长有短 HC[i]=(char*)malloc(sizeof(char)); strcpy(HC[i],c); }输出
for(int i=0;i<n;i++) { int j=0; printf("第%d个字符的编码,它的权值为是%d:\n",i,weight[i]); { printf("%s\n",HC[i]); //j++; } }
p1=p2=0; //相关变量赋初值 min1=min2=1000;//相当于一个大数 for(j=0;j<n+i;j++) { if(pht->ht[j].parent==0) { if(pht->ht[j].weight<min1) { min1=pht->ht[j].weight; p1=j; } } } for(j=0;j<n+i;j++) { if(pht->ht[j].parent==0) { if((pht->ht[j].weight>min1)&&(pht->ht[j].weight<=min2)&&(j!=p1)) { min2=pht->ht[j].weight; p2=j; } } }
使用flag分派字符串大小
for(int i=0;i<n;i++)
{ flag=0; //start=n-1; //k,f是两个工作指针,f指向k的父亲 for(int k=i,f=pht->ht[i].parent;f!=0;k=f,f=pht->ht[k].parent) { flag++; //左边分配0,右边分配1 } //--------------- c=(char*)malloc(sizeof(char)*(flag)); c[flag]='\0'; for(int k=i,f=pht->ht[i].parent;f!=0;k=f,f=pht->ht[k].parent) { if(pht->ht[f].lchild==k) { c[--flag]='0'; } else { c[--flag]='1'; } } //为第i个字符编码分配空间 //因为路径有长有短 HC[i]=(char*)malloc(sizeof(char)); strcpy(HC[i],c); }输出
for(int i=0;i<n;i++) { int j=0; printf("第%d个字符的编码,它的权值为是%d:\n",i,weight[i]); { printf("%s\n",HC[i]); //j++; } }
相关文章推荐
- 贪心算法 - 哈夫曼编码 Huffman
- Codeforces Round #263 (Div. 2)C(贪心,联想到huffman算法)
- 贪心算法之Huffman Code——来自Sicily
- 贪心算法 - 哈夫曼编码 Huffman
- poj 3253 huffman 贪心
- 【算法导论】贪心算法之活动选择问题
- 贪心算法 - 最小生成树 Kruskal算法
- acm之贪心算法题目8
- 贪心算法 活动安排问题
- 九度OJ 1433 贪心算法
- CLRS 16.2贪心算法的原理
- 五大常用算法:分治、动态规划、贪心、回溯和分支界定
- 算法题:输油管道问题 - 贪心
- 最简单的贪心算法--删除数字问题
- BP网络算法及其改进
- KNN算法改进:泛化实例算法(Generalized Instance Set Algorithm,GIS)
- 图像数据到网格数据-2——改进的SMC算法
- 字符串匹配--BM算法的改进的算法 Sunday Algorithm
- KMP(改进模式匹配算法)--串
- 算法之旅 直奔贪心