摘要: 1.实践题目 :工作分配问题 2.问题描述 设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为cij 。 设计一个算法,对于给定的工作费用,为每一个人都分配1 件不同的工作,并使总费用达到最小。 3.算法描述(包括解空间,画出测试样例的解空间树,剪枝(约束函数或限界函数)方法描述) 剪枝: 阅读全文
posted @ 2018-12-24 18:51 陈志文 阅读(157) 评论(0) 推荐(0)
摘要: 你对回溯算法的理解(2分) 回溯的实质是在问题的解空间进行深度优先搜索。 这句话是我在刚接触到回溯算法时看到的,开始一直很不理解,到现在只能说理解了一些了吧,回溯算法即穷举法,不断地尝试可能的方法, 尝试的过程中根据深度优先原则进行遍历以及回退到上一层的状态,最后通过比较各个方法的结果,从而得到最优 阅读全文
posted @ 2018-12-24 17:53 陈志文 阅读(116) 评论(0) 推荐(0)
摘要: 实践题目 设有n 个程序{1,2,…, n }要存放在长度为L的磁带上。程序i存放在磁带上的长度是 li,1≤i≤n。 程序存储问题要求 确定这n 个程序在磁带上的一个存储方案,使得能够在磁带上存储尽可能多的程序。 对于给定的n个程序存放在 磁带上的长度,计算磁带上最多可以存储的程序数。 设有n 个 阅读全文
posted @ 2018-12-02 19:27 陈志文 阅读(152) 评论(0) 推荐(0)
摘要: 1.对贪心算法的理解 贪心,顾名思义就是要尽可能拿到最好的,放在算法上看就是得到最好的结果,而这里的“最好的结果”是子问题的,也是暂时的, 就目前而言能够得出的最好的结果,并不需要想动态规划那样考虑整体最优,所以最后得到的结果也不一定是整体最优解。 2.请说明汽车加油问题的贪心选择性质 汽车加油问题 阅读全文
posted @ 2018-12-02 19:05 陈志文 阅读(116) 评论(0) 推荐(0)
摘要: 7-2最大子段和 给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整数均为负数时,定义子段和为0。 要求算法的时间复杂度为O(n)。 2.问题描述 输入格式: 输入有两行: 第一行是n值(1<=n 阅读全文
posted @ 2018-11-11 13:27 陈志文 阅读(102) 评论(0) 推荐(0)
摘要: 1. 对动态规划算法的理解: 动态规划算法和分治法的思想有些类似,感觉都有一种“大事化小,小事化了”的味道,通过将问题规模缩小,然后求解子问题,最后再根据子问题来求解总问题。由于各子问题之间相互独立,可能会出现子问题被重复解决的情况,所以这个时候我们需要建立一个数组来保存我们解决过的子问题的值,也就 阅读全文
posted @ 2018-11-11 12:57 陈志文 阅读(80) 评论(0) 推荐(0)
摘要: 1、请谈一下你对二分法思想的体会: 二分法是分治法的一种,通过将问题不断的减半从而得出问题的答案,将数组分为两个部分,再通过比较所求值x与a[2/n]的大小进行判断,最好的时间复杂度是O(1),即一次就找到,而最坏则是O(logn),大大减小了平均时间复杂度。 2、结对编程的汇报: 由于与我结对的同 阅读全文
posted @ 2018-10-14 16:17 陈志文 阅读(89) 评论(0) 推荐(0)
摘要: 1.实践题目 输入n值(1<=n<=1000)、n个非降序排列的整数以及要查找的数x,使用二分查找算法查找x,输出x所在的下标(0~n-1)及比较次数。若x不存在,输出-1和比较次数。 输入格式: 输入共三行: 第一行是n值; 第二行是n个整数; 第三行是x值。 输出格式: 输出x所在的下标(0~n 阅读全文
posted @ 2018-10-14 16:04 陈志文 阅读(134) 评论(0) 推荐(0)