2020年12月16日
摘要: 算法第五章作业及学期总结 一、算法第五章——回溯法 1. 对回溯算法的理解 回溯法就是一种高配版穷举法。它是对问题构造出解空间树之后,利用有条件的深度优先遍历进行搜索。相比穷举式搜索法,回溯法可以通过限界函数、约束函数进行剪枝,从而提高搜索的效率。 void Backtrack(int t) {// 阅读全文
posted @ 2020-12-16 10:50 刘熳如 阅读(174) 评论(0) 推荐(0) 编辑
2020年11月14日
摘要: 第四章——贪心算法 一、对贪心算法的理解 贪心算法就是每一次面临选择的时候都优先选择当前最优的选择,也就是只是选择局部最优,而不考虑全局情况。 但是在某些应用场景下(如活动安排问题、背包问题、哈夫曼编码问题)也即具有贪心选择性质和最优子结构性质的问题,利用贪心算法可以得到整体最优解(可用数学归纳法/ 阅读全文
posted @ 2020-11-14 14:49 刘熳如 阅读(103) 评论(0) 推荐(0) 编辑
2020年10月30日
摘要: 第三章- 动态规划 一、作业题目分析——单调递增最长子序列 1. 递归方程如图: /*m[i]表示以第i个数字结尾的最长序列数*/ 2. 填表法分析 (1)填表法中表的维度: 一维 【表m[i]记录以第i个数字结尾的最长序列数,每次计算遍历的范围都是1~I,这种情况下,一维数组便可以满足】 (2)填 阅读全文
posted @ 2020-10-30 23:07 刘熳如 阅读(99) 评论(0) 推荐(0) 编辑
2020年10月4日
摘要: 一、 实践题目名称 找第k小数 二、 问题描述 在n个无序的整数中找出第k小的数,要求平均时间复杂度为O(n) 具体题目如图: 三、 算法描述 void FindK (int *a,int left,int right,int k) {//找第k小 int mid=定位基准位置(调用parititi 阅读全文
posted @ 2020-10-04 09:48 刘熳如 阅读(111) 评论(0) 推荐(0) 编辑
2020年10月3日
摘要: 第二章作业 一、对分治法思想的体会 在汉诺塔问题,二分法等都用到了分治法的思想,分治法的思想在于分而治之。 即把一个难以求解的大规模问题,不断地切分成子问题,直到切分成规模足够小的可求解的子问题,从而解决这个大规模问题。 而无论是大规模还是小规模问题都是解决同一个问题,这就可以利用递归,不断减小规模 阅读全文
posted @ 2020-10-03 15:10 刘熳如 阅读(114) 评论(0) 推荐(0) 编辑
2020年9月17日
摘要: (一)本学期遵循华为的编码规范 链接:https://wenku.baidu.com/view/b6605630326c1eb91a37f111f18583d049640fd7.html?re=view# (二)算法在软件开发中发挥至关重要的作用 在《数学之美》中,可以发现算法无处不在,而且它的作用 阅读全文
posted @ 2020-09-17 15:46 刘熳如 阅读(293) 评论(0) 推荐(0) 编辑
2020年7月12日
摘要: 第八章 排序 一、整理大概的学习脉络 二、重点 (一)快排 1. 算法 //主函数调用语句: QKSort ( L, 1, L.length ); void QKSort(SqList &L, int low, int high) { int pos; if(low < high)//递归退出条件为 阅读全文
posted @ 2020-07-12 11:44 刘熳如 阅读(181) 评论(0) 推荐(0) 编辑
2020年6月25日
摘要: 第七章 查找 一、基本概念 查找表: 由同一类型的数据元素(或记录)构成的集合 静态查找表 查找的同时对查找表不做修改操作(如插入和删除等) 动态查找表 查找的同时对查找表具有修改操作 关键字:记录中某个数据项的值,可用来识别一个记录 ASL(关 键 字 的 平 均 比 较 次 数 或 平 均 搜 阅读全文
posted @ 2020-06-25 15:47 刘熳如 阅读(302) 评论(0) 推荐(0) 编辑
2020年6月11日
摘要: 第六章——图 一、学习内容架构 二、基于邻接矩阵与基于邻接表的图结构定义对比 三、算法 1、DFS算法 void DFS(Graph G, int v) {//从顶点v出发,深度优先搜索遍历连通图 G visited[v] = true; for(w = firstAdjvex(G, v); w>= 阅读全文
posted @ 2020-06-11 16:26 刘熳如 阅读(310) 评论(0) 推荐(0) 编辑
2020年5月23日
摘要: 第五章小结 一、知识框架(如图) 二、二叉树重点掌握算法 1. 先序遍历的递归算法 void PreOrderTraverse(BiTree T) { // 先序遍历二叉树 if(T) { cout << T -> data; //访问根结点 PreOrderTraverse(T->lchild); 阅读全文
posted @ 2020-05-23 14:46 刘熳如 阅读(266) 评论(0) 推荐(0) 编辑