摘要: 一、对回溯算法的理解 根据给定的要求进行递归的计算。 每一次的递归,符合给出的特定条件时,暂时保存当前的状态,进入下一层的计算;否则,退出当层的计算,并根据是否有返回值来决定是否更新上一层的状态。 也就是说,回溯算法一定要给出限界函数,不然会一直递归下去,最后爆栈。 二、“子集和”问题的解空间结构和 阅读全文
posted @ 2018-12-18 20:18 请你吃糖呀 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 一、实践题目 设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为cij 。 设计一个算法,对于给定的工作费用,为每一个人都分配1 件不同的工作,并使总费用达到最小。 输入格式: 输入数据的第一行有1 个正整数n (1≤n≤20)。接下来的n行,每行n个数,表示工作费用。 输出格式: 将计算 阅读全文
posted @ 2018-12-18 20:00 请你吃糖呀 阅读(136) 评论(1) 推荐(0) 编辑
摘要: 一、对贪心算法的理解 要做贪心选择,必须选出一种正确的贪心策略。这种策略必须是无后效性的,即,某个状态之前的情况不会对后面的状态造成影响,只对当前状态有影响。 二、汽车加油问题的贪心选择性质 经过加油站时先不加油,保留加油的机会,直接往前走。 当前的油量不足以去到下一个加油站,则返回最近的加油站加油 阅读全文
posted @ 2018-12-02 11:24 请你吃糖呀 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 一、实践题目 7-3 程序存储问题 (90 分) 设有n 个程序{1,2,…, n }要存放在长度为L的磁带上。程序i存放在磁带上的长度是 li,1≤i≤n。 程序存储问题要求确定这n 个程序在磁带上的一个存储方案, 使得能够在磁带上存储尽可能多的程序。 对于给定的n个程序存放在磁带上的长度,计算磁 阅读全文
posted @ 2018-11-29 21:07 请你吃糖呀 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 一、实践题目 给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整数均为负数时,定义子段和为0。 要求算法的时间复杂度为O(n)。 输入格式: 输入有两行: 第一行是n值(1<=n<=10000); 阅读全文
posted @ 2018-11-05 12:02 请你吃糖呀 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 一、对动态规划算法的理解 动态规划,我的理解就是当前状态的最优解必定来自来自过去状态的最优解,所以需要把问题不断的往回退,不断的把过去的状态的最优解求出,最后动态的选择出最优解,所以称作是动态规划。 二、编程题1、2的递归方程 编程题1的递归方程: 具体代码: 编程题2的递归方程: 具体代码: 三、 阅读全文
posted @ 2018-10-24 21:30 请你吃糖呀 阅读(186) 评论(2) 推荐(0) 编辑
摘要: 一、实践题目 已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数。有序序列A​0​​,A​1​​,⋯,A​N−1​​的中位数指A​(N−1)/2​​的值,即第⌊(N+1)/2⌋个数(A​0​​为第1个数)。 输入格式: 输入分三行。第一行给出序列的公共长度N(0<N≤1000 阅读全文
posted @ 2018-10-18 21:15 请你吃糖呀 阅读(146) 评论(0) 推荐(0) 编辑