2018年12月23日
摘要: 一、实践题目 (工作分配问题) 7-2 工作分配问题 (20 分) 设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为cij 。 设计一个算法,对于给定的工作费用,为每一个人都分配1 件不同的工作,并使总费用达到最小。 输入格式: 输入数据的第一行有1 个正整数n (1≤n≤20)。接下来 阅读全文
posted @ 2018-12-23 18:26 薪王的骨灰 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 1.对回溯算法的理解 回溯算法首先要确定问题的解空间,至少包含问题的一个(最优)解。之后从开始结点(根结点)出发,以深度优先方式搜索解空间。为了降低时间复杂度,需要建立限界函数或约束函数,进行剪枝。 2.“子集和”问题的解空间结构和约束函数 “子集和”问题的解空间结构可看做一颗完全二叉树,左子树为选 阅读全文
posted @ 2018-12-23 17:17 薪王的骨灰 阅读(152) 评论(0) 推荐(0) 编辑
  2018年12月2日
摘要: 一、实践题目 最优合并问题 二、问题描述 给定k 个排好序的序列, 用 2 路合并算法将这k 个序列合并成一个序列。题目设所采用的 2 路合并算法合并 2 个长度分别为m和n的序列需要m+n-1 次比较。问题为求最多比较次数以及最少比较次数。 三、算法描述 贪心策略:类似于求解哈夫曼编码问题时,构建 阅读全文
posted @ 2018-12-02 01:23 薪王的骨灰 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 一、对贪心算法的理解 贪心算法的思想是在对问题求解时,总是做出在当前看来是最好的选择,并不从整体最优上加以考虑,所做出的选择只是在某种意义上的局部最优解。但贪心算法不是对所有问题都能得到整体最优解,问题需要满足贪心算法的性质,即只有当局部最优解与全局最优解一致时,才能用贪心算法求解。 二、汽车加油问 阅读全文
posted @ 2018-12-02 00:38 薪王的骨灰 阅读(130) 评论(0) 推荐(0) 编辑
  2018年11月5日
摘要: 一、实践题目 7-2 最大子段和 二、问题描述 要求编写一个时间复杂度为O(n)的算法,去求解给定n个整数(包含负数)组成的序列a[1],a[2],a[3],…,a[n]中的子段和的最大值,规定当所给的整数均为负数时,定义子段和为0。 三、算法描述 定义一个辅助数组note[n],note[i]记录 阅读全文
posted @ 2018-11-05 12:05 薪王的骨灰 阅读(133) 评论(0) 推荐(0) 编辑
  2018年11月4日
摘要: 一、对动态规划的理解 动态规划算法的思想为:当前问题的最优解必定是在子问题的最优解的基础上求得的,进而去求子问题的最优解,通过不断递归之后,由初始状态的最优解以自底向上的方式不断动态地得到当前问题的最优解。 二、编程题1、2的递归方程 (1)编程题1的递归方程: 定义两个辅助一维数组note,Max 阅读全文
posted @ 2018-11-04 21:31 薪王的骨灰 阅读(230) 评论(0) 推荐(0) 编辑
  2018年10月21日
摘要: 1.实践题目:两个有序序列的中位数 2.问题描述: 输入一个n(0<n<=100000),代表两个等长有序序列的长度,随后两行分别输入两个非降序序列,求出两个序列的合并后的中位数,中位数为合并后的有序序列中的第(n+1)/2个数,下标从0开始。 3.算法描述: 本题可采用多种方法求解,最初我们选用的 阅读全文
posted @ 2018-10-21 21:48 薪王的骨灰 阅读(155) 评论(0) 推荐(0) 编辑
  2018年10月15日
摘要: 二分法思想是个基础但又极其重要的思想,C++,Java,数据结构,算法设计等多门课程都详细地讲述了一遍二分法。 对于一个已排序的长数组来说,二分法其O(NlogN)的时间复杂度,对于效率的提升是毋庸置疑的,而且二分法用途广泛,实用且方便。但这一切的前提是数组已排序,对于无序表与链表,二分法便无能为力 阅读全文
posted @ 2018-10-15 00:05 薪王的骨灰 阅读(211) 评论(0) 推荐(0) 编辑