| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 748 人关注过本帖
标题:课程设计,H编码问题
只看楼主 加入收藏
火蚂
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-5-19
收藏
 问题点数:0 回复次数:3 
课程设计,H编码问题

H编码问题:
设有N个信号,u1,u2,u3,u4,u5,u6------un,且满足
u1+u2+u3----+un=1;
编程实现对各个信号的编码:
(1)首先将N个信号按值排序
(2)将最小的两个信号合并成一个信号(相加合并),从而将N个信号缩减为N-1个信号
(3)将缩减后的信号仍然按值排序,然后再将最小的两个合并,这样又缩减为N-2个信号
(4)以此类推,直至剩下一个信号为止(最后累加的信号值为1)
(5)将每次合并的两个信号分别用0和1标志
(6)从最后一级开始,向前返回,就得出各个信号在这组信号流中的编码
详细图示看上传的图片,
小生主要不知道中间生成的那些缩减后数组该怎么办(我是用数组生成各个信号值的)
对这些缩减后的数组再重新排序的以后就找不到对应关系了,
求编码的时候就回不去了,
跪求各位大虾帮忙看下,感激不尽。只需稍微指点下算法就行了。
对了,我苦思好几天,是不是应该用递归,或是双向链表解决啊!
先谢谢各位了

图片附件: 游客没有浏览图片的权限,请 登录注册

搜索更多相关主题的帖子: 课程 编码 设计 
2006-06-06 18:07
Bekky
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:354
专家分:0
注 册:2006-5-29
收藏
得分:0 
可不可以建立一个结构体:
struct{
float num; //记录信号数值
int flag; //记录状态
}signal;

用这个结构体建立一个数组,每次合并时在flag里面作好标记,然后通过扫描flag标志位得到你要找的位.

我的编译环境为WinXp + VC 6.0 http://blog..cn/yobo
2006-06-07 10:31
浪荡书生
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-6-8
收藏
得分:0 
我们也要课程设计
好烦啊
不会
程序读的懂
但是自己不会写

还是把一门钻精得好,全能成不了冠军,样样都会,样样都不精,永远成不了大气候!
2006-06-08 00:33
火蚂
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-5-19
收藏
得分:0 

哈哈,我会了,用哈夫曼树(最优二叉树)解决
代码如下:
/*用排完序的字符串建立霍夫曼树 */
linktree createHftree(linktree tree)
{
linktree p,q,newnode,beforep;

for(p=tree->next,q=p->next;p!=NULL&&q!=NULL;p=tree->next,q=p->next) //p,q结点的权值最小为目标结点
{
tree->next=q->next; //将tree引到后面第三个结点处
q->next=NULL;
p->next=NULL; //q,p的后继置空

newnode=(linktree)malloc(sizeof(Hftree));/*申请新结点作为霍夫曼树的中间结点*/
if(!newnode)
return NULL;
newnode->next=NULL;
newnode->mark=0;

newnode->lchild=p;/*取链表头结点后的两个结点作为新结点的左、右儿子*/
newnode->rchild=q;
p->parent=newnode;
q->parent=newnode;
newnode->weight=p->weight+q->weight; //对newnode进行相关赋值

p=tree->next;
beforep=tree;

if(p!=NULL&&p->weight>=newnode->weight) /*将新结点插入原链表的相应位置*/
{
newnode->next=beforep->next;
beforep->next=newnode;
}
else
{
while(p!=NULL&&p->weight<newnode->weight)
{
p=p->next;
beforep=beforep->next;
}
newnode->next=beforep->next;
beforep->next=newnode;
}
}
return (tree->next);
}

2006-06-22 16:28
快速回复:课程设计,H编码问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018626 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved