摘要: 一、实践题目 设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为cij 。 设计一个算法,对于给定的工作费用,为每一个人都分配1 件不同的工作,并使总费用达到最小。 输入格式: 输入数据的第一行有1 个正整数n (1≤n≤20)。接下来的n行,每行n个数,表示工作费用。 输出格式: 将计算 阅读全文
posted @ 2018-12-21 21:15 underdestiny 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 一、对回溯算法的理解 回溯算法首先需要构建解空间,然后对解空间进行遍历。为了降低时间复杂度,需要建立限界函数或约束函数,避免去遍历明显不可能的分支。 二、“子集和”问题的解空间结构和约束函数 “子集和”问题可以描述为一棵完全二叉树,每一层的左子树表示对选择当前元素,右子树表示不选择当前元素。 对于约 阅读全文
posted @ 2018-12-21 19:47 underdestiny 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 一、实践题目:最优合并问题 二、问题描述:给定k 个排好序的序列, 用 2 路合并算法将这k 个序列合并成一个序列。 设所采用的 2 路合并算法合并 2 个长度分别为m和n的序列需要m+n-1 次比较, 求最多比较次数和最少比较次数。 三、算法描述:类似于构建哈夫曼树的思想,求最少比较次数时,每次从 阅读全文
posted @ 2018-12-01 15:40 underdestiny 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 一、对贪心算法的理解 在对问题求解时,总是做出在当前看来是最好的选择。而不从整体最优上加以考虑,得到的是在某种意义上的局部最优解。只有当局部最优解与全局最优解一致时,才能用贪心法求解。 因而,贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,策略的选择有很多种,但并不一定都正确。选择策 阅读全文
posted @ 2018-12-01 15:01 underdestiny 阅读(570) 评论(0) 推荐(0) 编辑
摘要: 1.实践题目 最大子段和 2.题目描述 求出子段和的最大值,若最大值为负数,则最大值为0 定义一个一维数组note[i],初始时存放的值为该序列,每次更新时记录以当前下标的值为子段末尾的子段和的最大值,最后用max记录所有子段和的最大值 4.算法时间及空间复杂度分析 该算法只需遍历一次该一维数组,所 阅读全文
posted @ 2018-11-05 21:18 underdestiny 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 一、对动态规划的理解 动态规划思想与分治法类似,都是将问题分解为多个子问题,通过求解子问题来得到最终答案,而动态规划的优势在于,动态规划防止了子问题的重复计算,每个问题只计算一次,自底向上地求出原问题的解。 二、编程题1、2的递归方程 第一题 m[i]表示以当前位置的值为子序列末位的最长子序列的长度 阅读全文
posted @ 2018-11-04 22:14 underdestiny 阅读(415) 评论(0) 推荐(0) 编辑
摘要: 1.实践题目:两个有序序列的中位数 2.问题描述: 输入一个n(0<N<=1e5),代表两个有序序列的长度,随后两行分别键入两个非降序序列,求出两个序列的合并后的中位数,此处中位数指有序序列中的第(N+1)/2个数,下标从0开始。 3.算法描述: 采用分治法的思想,不断缩小问题的规模,最终合并子问题 阅读全文
posted @ 2018-10-21 15:22 underdestiny 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 二分搜索算法是一种效率很高的算法,时间复杂度为O(NlogN)。 相较于传统的遍历搜索算法,二分法的效率虽高,但是缺点也是很明显的,那就是二分搜索只能用于有序的顺序表,而不能用于无序表或是链表,而一般的遍历搜索算法则没有这个限制。 若是想要在无序表中使用二分搜索算法,还需使用排序算法进行排序后再使用 阅读全文
posted @ 2018-10-14 23:28 underdestiny 阅读(600) 评论(0) 推荐(0) 编辑