摘要: 1.实践题目 : 工作分配问题 2.问题描述 设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为cij 。 设计一个算法,对于给定的工作费用,为每一个人都分配1 件不同的工作,并使总费用达到最小。 输入格式: 输入数据的第一行有1 个正整数n (1≤n≤20)。接下来的n行,每行n个数,表 阅读全文
posted @ 2018-12-24 17:40 kiritsugu 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 1.对回溯算法的理解: (1)应用回溯法求解问题时,首先应明确定义问题的解空间,该解空间应至少包含问题的一个最优解。 (2)在定义了问题的解空间后,还需要将解空间有效地组织起来,使得回溯法能方便地搜索整个解空间,通常将解空间组织成树或图的形式。 (3)确定了问题的解空间结构后,回溯法将从开始结点(根 阅读全文
posted @ 2018-12-24 17:18 kiritsugu 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 1.实践题目 7-1 最优合并问题 2.问题描述 给定k 个排好序的序列, 用 2 路合并算法将这k 个序列合并成一个序列。 假设所采用的 2 路合并算法合并 2 个长度分别为m和n的序列需要m+n-1 次比较。试设 计一个算法确定合并这个序列的最优合并顺序,使所需的总比较次数最少。 为了进行比较, 阅读全文
posted @ 2018-12-02 16:43 kiritsugu 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 1.贪心算法的理解 实质:通过一系列的选择来得到问题的解,而这一系列的选择的方向是早已确定了的——即每个选择都必须是当前状态下局部最好选择。 适用问题:整体最优解可以通过一系列局部最优选择来达到。 特点:可以依赖于以往所做过的选择,但绝不依赖于将来所做的选择,通常以自顶向下的方式进行。 2.贪心选择 阅读全文
posted @ 2018-12-02 15:58 kiritsugu 阅读(85) 评论(0) 推荐(0) 编辑
摘要: 1.实践题目 2.问题描述 给定一个由 n行数字组成的数字三角形如下图所示。试设计一个算法,计算出从三角形 的顶至底的一条路径(每一步可沿左斜线向下或右斜线向下),使该路径经过的数字总和最大。 输入格式: 输入有n+1行: 第 1 行是数字三角形的行数 n,1<=n<=100。 接下来 n行是数字三 阅读全文
posted @ 2018-11-04 20:47 kiritsugu 阅读(96) 评论(0) 推荐(0) 编辑
摘要: 1.对动态规划的理解 动态规划适用条件:同时满足最优子结构和重叠子问题。 最优子结构:问题的最优解包含了子问题的最优解。 重叠子问题:在利用递归解决问题时,有些问题总是被重复计算,效率低下。而动态规划对每个子问题只解一次,把结果保存在表格中,通常只需要多项式时间就可以解决。 2.编程题递归方程 (1 阅读全文
posted @ 2018-11-04 20:26 kiritsugu 阅读(96) 评论(0) 推荐(0) 编辑
摘要: 1.实践题目 2.问题描述 设a[0:n-1]是已排好序的数组,请改写二分搜索算法,使得当x不在数组中时,返回小于x的最大元素位置i和大于x的最小元素位置j。当搜索元素在数组中时,i和j相同,均为x在数组中的位置。 输入格式: 输入有两行: 第一行是n值和x值; 第二行是n个不相同的整数组成的非降序 阅读全文
posted @ 2018-10-14 18:13 kiritsugu 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 1.二分法思想: (1)二分查找相对于顺序查找而言,效率有所提高,时间复杂度是logn级别,普通暴力顺序则需要O(n)时间才能查找到 (2)二分查找的原理也相对简单,先跟中间的比,如果小于的话找左边,大于的话找右边,然后再跟左边/右边的中间的比,重复这个过程,直到找到为止。 (3)但二分查找也有局限 阅读全文
posted @ 2018-10-12 23:31 kiritsugu 阅读(105) 评论(0) 推荐(0) 编辑