![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法课程
USTC暖暖
这个作者很懒,什么都没留下…
展开
-
剑指offer14-I剪绳子
题目描述给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m-1] 。请问 k[0]*k[1]*…*k[m-1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。输入描述输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1输入: 10输出: 36解释: 10 = 3 + 3 + 4, 3 × 3 × 4 =原创 2021-04-16 14:37:14 · 101 阅读 · 0 评论 -
C++常用基础算法
1. 快速排序算法2. 堆排序算法3. 归并排序算法4. 二分查找算法5. 线性查找算法(BFPRT)6. DFS7. BFS8. Dijkstra算法9. 动态规划算法10. 分治算法11. 贪心算法12. 回溯算法13. 分支界限法14. 朴素贝叶斯分类算法...原创 2021-02-01 21:00:08 · 1294 阅读 · 0 评论 -
堆排序自下而上建立大根堆时间复杂度为O(n)的证明
建立大根堆时,设有n个记录的初始序列所对应的完全二叉树的深度为h,建初堆时,每个非终端结点都要自上而下进行"筛选"。由于第i层上的结点数小于等于i-1,且第i层结点最大下移的深度为h-i,每下移一层要做两次比较,所以建初堆时关键字总的比较次数为:h=⌊log2(n)⌋+1h=\lfloor log_2(n)\rfloor+1h=⌊log2(n)⌋+12h≤n+12^h\leq n+12h≤n+1∑i=h−112i−1⋅2⋅(h−i)=∑i=h−112i(h−i)\sum_{i=h-1}^1 2原创 2020-12-20 16:17:03 · 2492 阅读 · 2 评论 -
2020秋数据结构实验第三题:文本相似度比较 C++实现
实验描述实验分析实验代码实验结果原创 2020-12-12 22:34:50 · 3094 阅读 · 9 评论 -
2020秋数据结构实验第五题:哈希查找 C++实现
实验描述:实验分析:所谓哈希查找也就是根据输入的数据找到我们想要查找的信息,而且要做到O(1)的时间复杂度,即并不随着数据量的变大而查找次数变得很大,基础哈希表的创建过程如下:根据输入计算Hash值,如果不冲突直接放入对应的槽中; 如果冲突可以采用几种冲突解决的方法进行解决,开放地址法和链式存储法,现在本助教给出开放地址法中的再Hash的方法进行解决冲突; 通过1和2已经创建了Hash表,我们再创建的时候记录冲突最大的次数,也将是我们在查找时的最大查找次数,进行查找,计算平均查找次数。原创 2020-12-09 23:20:44 · 454 阅读 · 0 评论 -
2020秋数据结构实验第四题:Huffman算法编码和解码 C++实现
实验题目描述总结一下Huffman编码的过程,可以参考wiki百科的下图:先统计词的词频作为权重实验分析:Huffman编码解码的过程比较固定:统计文章的字符频率作为权重; 按照上述规则创建Huffman树,将字符放在各个叶子结点的位置; 对各个叶子结点进行编码获取每个字符的Huffman编码,左0右1; 根据Huffman编码依次解码获得叶子结点时,返回字符,依次完成解码过程; 计算压缩比,按照最基本的一个字符2个字节(中文字)即16位计算,再根据生成的Huffman编码.原创 2020-12-09 23:20:59 · 586 阅读 · 0 评论 -
2020秋数据结构实验第一题:兔子数列仿真(斐波那契数列仿真)C++实现
实验题目描述:编程实现兔⼦问题,历史上有⼀个有名的关于兔⼦的问题:假设有⼀对兔⼦,⻓两个⽉它们就算 ⻓⼤成年了。然后以后每个⽉都会⽣出1对兔⼦,⽣下来的兔⼦也都是⻓两个⽉就算成年,然后每 个⽉也都会⽣出1对兔⼦了。这⾥假设兔⼦不会死,每次都是只⽣1对兔⼦,实现计算第20个(第 15)⽉的兔⼦对数 加入条件,每对兔⼦⽣完2次(N次)兔⼦后会死亡,实现计算第20个(第15)⽉的兔⼦对数 每隔⼏个⽉可以繁殖设置为参数K, 繁殖⼏代后死亡设置成参数P,计算第N个⽉的兔⼦对数题目分析:看似题目是三个原创 2020-12-09 23:21:33 · 3052 阅读 · 0 评论