摘要: 1、实践题目 :工作分配问题 2、问题描述 设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为cij 。 设计一个算法,对于给定的工作费用,为每一个人都分配1 件不同的工作,并使总费用达到最小。 输入格式: 输入数据的第一行有1 个正整数n (1≤n≤20)。接下来的n行,每行n个数,表示 阅读全文
posted @ 2018-12-23 17:17 Kdj 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 1、回溯算法的理解 回溯算法的基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试。用回溯算法解决问题的一般步骤为: (1)定义一个解空间,它包含问题的解。 (2)利用适于搜索的方法组织解空间。 (3)利用深度优先法搜索解空间。 (4)利用限界函数避免移动到不可能产生解的子空间。 2、 阅读全文
posted @ 2018-12-23 16:33 Kdj 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 1.实践题目 7-1 最优合并问题 2.问题描述 给定k 个排好序的序列, 用 2 路合并算法将这k 个序列合并成一个序列。 假设所采用的 2 路合并算法合并 2 个长度分别为m和n的序列需要m+n-1 次比较。试设 计一个算法确定合并这个序列的最优合并顺序,使所需的总比较次数最少。 为了进行比较, 阅读全文
posted @ 2018-12-02 19:23 Kdj 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 1、你对贪心算法的理解 所谓贪心算法,是指从问题的初始状态出发,通过若干次的贪心选择而得到的最优值(或较优值)的一种求解问题策略,即贪心策略。 2、请说明汽车加油问题的贪心选择性质 贪心策略是一次加的油尽可能走多的路,只要剩下的油可以到下一个加油站,就不加油,直到当前所剩的油量不足以支持走到下一个加 阅读全文
posted @ 2018-12-02 19:04 Kdj 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 1、实践题目: 最大子段和 2,问题描述: 给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整数均为负数时,定义子段和为0。 要求算法的时间复杂度为O(n)。 3、算法描述: 定义两个数组a,b, 阅读全文
posted @ 2018-11-04 19:42 Kdj 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 1、对动态规划算法的理解: 动态规划与其它算法相比,大大减少了计算量,丰富了计算结果,不仅求出了当前状态到目标状态的最优值,而且同时求出了到中间状态的最优值,这对于很多实际问题来说是很有用的。动态规划的思想是将主问题分解成若干个子问题,先求解子问题的解,再通过子问题的解来求出主问题的解,动态规划相比 阅读全文
posted @ 2018-11-04 19:19 Kdj 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 输入n值(1<=n<=1000)、n个非降序排列的整数以及要查找的数x,使用二分查找算法查找x,输出x所在的下标(0~n-1)及比较次数。若x不存在,输出-1和比较次数。 输入格式: 输入共三行: 第一行是n值; 第二行是n个整数; 第三行是x值。 输出格式: 输出x所在的下标(0~n-1)及比较次 阅读全文
posted @ 2018-10-14 22:41 Kdj 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 1、对二分法的思想的体会: (1)二分法是将问题的规模或解的范围进行不断的缩半,大大降低了时间复杂度,比如顺序查找时间复杂度为O(n),而二分查找为O(logn)。 (2)二分查找要求数组是有序数列,所以有时需要先对数组进行排序。 2、结对编程情况的汇报: 结对编程过程中队员之间共同讨论,一起思考, 阅读全文
posted @ 2018-10-14 22:22 Kdj 阅读(159) 评论(0) 推荐(0) 编辑