摘要: 1、实践题目:工作分配问题 2、问题描述: 设集合S={x1,x2,…,xn}是一个正整数集合,c是一个正整数,子集和问题判定是否存在S的一个子集S1,使S1中的元素之和为c。试设计一个解子集和问题的回溯法。 输入格式: 输入数据第1行有2个正整数n和c,n表示S的大小,c是子集和的目标值。接下来的 阅读全文
posted @ 2018-12-22 13:59 萌新一枚。 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 一、对回溯法的理解: 在采用回溯法解决实际问题之前,要先构造一颗解空间树,然后按照深度优先的策略进行搜索。所以使用回溯法的时候要先明确定义好问题的解空间(解空间树是一个抽象的概念,在代码中不给予实现)。回溯的灵魂在于遍历,回溯法在求问题的一个解时,只要搜索到问题的一个解即可结束;但如果回溯法用以求问 阅读全文
posted @ 2018-12-22 13:18 萌新一枚。 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 1、实践题目:删数问题 2、问题描述: 给定n位正整数a,去掉其中任意k≤n 个数字后,剩下的数字按原次序排列组成一个新 的正整数。对于给定的n位正整数a和正整数 k,设计一个算法找出剩下数字组成的新数最 小的删数方案。 3、算法描述: 用字符串数组a[k]记录n位正整数a,对正整数a进行“从最高位 阅读全文
posted @ 2018-11-30 19:10 萌新一枚。 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 1、对贪心算法的理解: 贪心算法和动态规划算法有一定的相似之处。首先,这两个算法都需要将问题分解成一个个子问题去解决;其次,两个算法都涉及到最优解。但是这两个算法不同之处在于,动态规划算法在解决子问题时包括一个比较的过程,每一次解决子问题的过程中,在各个选项中选择最优的选项,所以动态规划算法需要一个 阅读全文
posted @ 2018-11-30 18:35 萌新一枚。 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 1、实践题目:编辑距离问题 2、问题描述: 设A和B是2个字符串。要用最少的字符操作将字符串A转换为字符串B。这里所说的字符操作包括 (1)删除一个字符; (2)插入一个字符; (3)将一个字符改为另一个字符。 将字符串A变换为字符串B所用的最少字符操作数称为字符串A到 B的编辑距离,记为d(A,B 阅读全文
posted @ 2018-11-04 22:29 萌新一枚。 阅读(136) 评论(0) 推荐(1) 编辑
摘要: 一、对动态规划算法的理解 在学习了分治法和动态规划之后,会发现两者之间有相类似的地方。其实质都是把一个规模较大的子问题分解成规模较小的子问题去解决。但是两个算法之间所不同的是,动态规划算法所分解出来的子问题之间存在重叠的问题。所以动态规划算法其实相比之下需要去解决子问题的重叠问题。而且动态规划有时候 阅读全文
posted @ 2018-10-28 19:52 萌新一枚。 阅读(88) 评论(0) 推荐(0) 编辑
摘要: 实践题目:改写二分搜索算法 问题描述:设a[0:n-1]是已排好序的数组,请改写二分搜索算法,使得当x不在数组中时,返回小于x的最大元素位置i和大于x的最小元素位置j。当搜索元素在数组中时,i和j相同,均为x在数组中的位置。 输入格式: 输入有两行: 第一行是n值和x值; 第二行是n个不相同的整数组 阅读全文
posted @ 2018-10-14 19:04 萌新一枚。 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 一、对二分法思想的体会 二分法相比于普通的算法来说,它的时间复杂度更优,这样一来就大大节省了程序运行的时间。 二分法是分治法的一种运用,从二分法从可以学习到分治法的思想,有利于我们学会运用分治法的思想去解决其他问题。 二分搜索法是分治法的一个典型例子。相比于顺序搜索法,它很好地利用排序的条件,但是它 阅读全文
posted @ 2018-10-10 18:29 萌新一枚。 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 第一章主要介绍的内容是算法的时间复杂度还有NP完全问题。 算法的复杂度分析主要包括空间复杂度和时间复杂度,但空间复杂度一般我们不去分析,因为现在的硬件水平确实处于较高的水平,所以我们一般会去分析时间复杂度。时间复杂度用O(n)表示。 NP完全问题的概念比较难理解。简单来说,就是如果一个问题A,且A∈ 阅读全文
posted @ 2018-10-08 18:34 萌新一枚。 阅读(72) 评论(0) 推荐(0) 编辑