摘要:
1、对回溯算法的理解: 回溯算法也叫试探法,它是一种系统地搜索问题的解的方法。 用回溯算法解决问题的一般步骤: 1) 针对所给问题,定义问题的解空间,它至少包含问题的一个(最优)解。 2 )确定易于搜索的解空间结构,使得能用回溯法方便地搜索整个解空间 。 3 )以深度优先的方式搜索解空间,并且在搜索 阅读全文
摘要:
1、你对贪心算法的理解 当一个问题具有最优子结构时,可用动态规划法求解,但有时会有更简单有效的方法——贪心算法。顾名思义,贪心算法总是在某种意义上的局部最优选择。当然,我们希望贪心算法得到的最终结果也是整体的最优。贪心算法的基本思路是从问题的某一个初始解出发一步一步地进行,根据某个优化测度,每一步都 阅读全文
摘要:
1、实践题目:最优合并问题 2、问题描述: 3、算法描述(说明你的贪心策略,并且参考会场安排问题,利用反证法证明贪心选择和最优子结构性质): 贪心策略:最多比较次数:选择最大和第二大的数,依次递减;最少比较次数:选择最小和第二小的数; 反证法证明: 设序列集合E={1,2,...,n}以按长度大小的 阅读全文
摘要:
1、算法第三章为动态规划,动态规划算法与分治法类似,其基本思想是将待求解问题分解成若干个问题,先求解子问题,再结合这些子问题的解得到原问题的解。与分治法不同的是,适合用动态规划法求解的问题经分解得到的子问题往往不是互相独立的。若用分治法来解这类问题,经分解得到的子问题数目太多,以致最后解决原问题需要 阅读全文
摘要:
1、实践题目:7-1 数字三角形 2、问题描述: 3、算法描述 #include <iostream> using namespace std; int b[10005][10005]; int numberTriangle(int a[1005][1005], int n){ for(int i 阅读全文
摘要:
二分法看似简单,却可以解决许多难题,例如分派问题等等。它是运用分治策略的一个例子,其基本思想就是将n个元素分成个数大致相同的两半,取a[n / 2]与x作比较。如果x = a[n / 2],则找到x,算法终止;如果x < a[n /2],则只在数组a的右半边继续搜索x。整个算法时间复杂度为O(log 阅读全文
摘要:
1、实践题目:7-1 二分查找(此题与詹泽伟同学一同完成) 2、问题描述: 3、算法描述: 第一种方法(循环): #include<iostream> using namespace std; int BS(int a[],int x, int n){ int l = 0; int r = n - 阅读全文
摘要:
1、对于代码规范,我将采用如下: https://blog.csdn.net/qq_33499229/article/details/88677757 2、 《数学之美》我只读了一部分,下面我来浅谈个人理解。 首先《数学之美》绝不仅仅是一本单纯讲述数学原理的书,它更多的是将数学放在IT领域,让数学原 阅读全文
摘要:
查找的基本概念: 查找表:同一类型的数据元素(记录)构成的集合。静态查找表:对查找表只进行查找操作。动态查找表:不仅进行查找操作,而且在查找过程中还伴随着插入(查找的数据元素不在表中时)、删除某个数据元素的操作。关键字(key):是数据元素(或记录)的某个数据项的值,用它可标识(识别)一个数据元素( 阅读全文
摘要:
图(Graph):是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。 线性表中我们把元素叫元素,树中叫结点,在途中数据元素我们则称为顶点(Vertex)。 线性表可以没有数据元素,称为空表,树中可以没有结点,叫空树, 阅读全文