摘要: 一.对回溯算法的理解 回溯法是一种搜索算法,能搜索一个问题的所有解或者任一解。用回溯法解决问题的步骤如下: 1.确定问题的解空间 2.确定易于搜索的解空间结构 3.以深度优先方式搜索解空间,找到问题的所有解或者任一解,在搜索过程中用用剪枝函数来避免无效搜索。 子集树和排列树是两种解空间树,当问题是从 阅读全文
posted @ 2019-12-18 22:37 Mas- 阅读(526) 评论(0) 推荐(0) 编辑
摘要: 一.对贪心算法的理解 贪心算法所做的每个选择都是当前状态下最好的选择,可以依赖以往所做的选择,但不依赖将来做的选择,也不依赖子问题的解。它并不从整体最优上加以考虑,故贪心算法并不是总能得到整体最优解,但有些问题相比于动态规划算法,使用贪心算法会更简单且效率更高,比如找零钱问题等。 可以用贪心选择算法 阅读全文
posted @ 2019-11-23 17:01 Mas- 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 一.实践题目 设有n 个程序{1,2,…, n }要存放在长度为L的磁带上。程序i存放在磁带上的长度是 li,1≤i≤n。 程序存储问题要求确定这n 个程序在磁带上的一个存储方案, 使得能够在磁带上存储尽可能多的程序。 对于给定的n个程序存放在磁带上的长度,计算磁带上最多可以存储的程序数。 输入格式 阅读全文
posted @ 2019-11-17 16:38 Mas- 阅读(1794) 评论(0) 推荐(0) 编辑
摘要: 一、对动态规划算法的理解 动态规划算法与分治法很相似,相同之处是将原问题分解为若干个子问题,再根据子问题求得原问题的解。不同之处是动态规划的子问题之间不是相互独立的,经常是有重叠的。所以为了避免重复计算,可以制作一个表来记录已经解决的子问题,当再次遇到子问题时,查表即可得到答案。该算法通常用于求解具 阅读全文
posted @ 2019-11-03 16:58 Mas- 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 一、实践题目 设A和B是2个字符串。要用最少的字符操作将字符串A转换为字符串B。这里所说的字符操作包括 (1)删除一个字符; (2)插入一个字符; (3)将一个字符改为另一个字符。 将字符串A变换为字符串B所用的最少字符操作数称为字符串A到 B的编辑距离,记为d(A,B)。 对于给定的字符串A和字符 阅读全文
posted @ 2019-10-20 17:02 Mas- 阅读(1084) 评论(0) 推荐(0) 编辑
摘要: 一.对分治法思想的体会 分治法的思想是将一个难以直接解决的大问题分割成一些规模较小的相同子问题,解决子问题,然后将各个子问题的解合并得到原问题的解,即分而治之,一般与递归算法结合使用。二分搜索就是一个运用分治思想的典型例子,先将n个元素分成个数大致相等的两半,将要搜索的数x与中位数进行比较,相等则得 阅读全文
posted @ 2019-10-14 20:04 Mas- 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 一.实践题目 求两个有序序列的中位数 已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数。有序序列,的中位数指A​(N−1)/2​​的值,即第⌊(N+1)/2⌋个数(A​0​​为第1个数) 输入格式: 输入分三行。第一行给出序列的公共长度N(0<N≤100000),随后每行输 阅读全文
posted @ 2019-09-22 16:08 Mas- 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 一.编码规范 以下内容是我从网上筛选的一些适合自己近期编码的编码规范。以后会严格按照该规范进行编码。 (原文链接为:https://blog.csdn.net/aaaaa_alice/article/details/82144460 ) 1.命名规则: (1)基本规则:采用大小写混合,提高名字的可读 阅读全文
posted @ 2019-09-06 14:51 Mas- 阅读(168) 评论(0) 推荐(0) 编辑