SCAU–8609–哈夫曼树 原题描述 思路 该题目属于填空题的类别。题目已经给出了大部分代码,剩下的需要自己琢磨。 需要解决的点: 题目中有过多的辅助性的printf语句,需要删除才能打印出题目需要的答案 完成Select函数的编写 分割Select函数和HuffmanCoding函数 由题可见,HuffmanCoding函数中运用了Select函数(用来挑选输入数据中paren值为0,且数值最小的两个数据)。即Select函数可以转换为求一个数组中第一小和第二小数的问题。我最初的想法是用两个for分别求两个值,但题目只运用一个for即解决问题。for部分如下 其实这里排版有点问题 显然,当前节点的parent为0时,进入第一个if范围,继续判断。 Select的作用是s1,s2作为最小值的下标记录变量,且初始化为-1后(数组中不存在下标),开始不断更新s1和s2的直到找到最小节点的下标。在这里,一旦进入for循环后,如果s1和s2的值还为-1则需要更新s1和s2的值,因为对于一个不存在的值无法与数组其他节点比较,总需要赋予一个初始值。且当找到一个更小值后,需要更新一次s1和s2。 且为了保证s1比s2小,应该让s1先去比较,再和s2比较,就会出现以下情况(被比的第三量用x表示): 修改后,for循环如下 完整AC代码
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/81179.html