2018年12月23日
摘要: 恢复内容开始 1、实践题目 :工作分配问题 2、问题描述 设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为cij 。 设计一个算法,对于给定的工作费用,为每一个人都分配1 件不同的工作,并使总费用达到最小。 3、算法描述(包括解空间,画出测试样例的解空间树,剪枝(约束函数或限界函数)方法 阅读全文
posted @ 2018-12-23 17:39 邓Loser 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 1、你对回溯算法的理解。 答:回溯法的简单理解有点像遍历算法,利用回溯法要先通过深度优先的方式找到解空间,然后利用约束函数进行剪枝,以此比较出最合适的解。 2、请说明“子集和”问题的解空间结构和约束函数(2分) 答:因为求的是子集的和,所以解空间应该为全部子集,即:n! 约束函数:从第一个元素开始, 阅读全文
posted @ 2018-12-23 16:52 邓Loser 阅读(117) 评论(0) 推荐(0) 编辑
  2018年12月2日
摘要: 1、实践题目 删数问题 2、问题描述 给定n位正整数a,去掉其中任意k≤n 个数字后,剩下的数字按原次序排列组成一个新 的正整数。对于给定的n位正整数a和正整数 k,设计一个算法找出剩下数字组成的新数最 小的删数方案。 3、算法描述 答:从第一个数开始往后比较,当出现降序的时候就把比后面大的那个数字 阅读全文
posted @ 2018-12-02 18:08 邓Loser 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 1、你对贪心算法的理解 答:贪心算法就相当于在每一次的选择中都选择最优的,但每步的最优并不等于问题的最优解,这也是贪心算法和动态规划的区别。但在使用贪心算法的时候,会有一种盲找的感觉,比如实验题第二题删数问题,一开始思考的贪心算法是删掉最大的书,但这个并不是题目所要求的算法,因此,感觉贪心算法就有一 阅读全文
posted @ 2018-12-02 15:11 邓Loser 阅读(113) 评论(0) 推荐(0) 编辑
  2018年11月10日
摘要: 1、实践题目。 数字三角形 2、问题描述。 给定一个由 n行数字组成的数字三角形如下图所示。试设计一个算法,计算出从三角形 的 顶至底的一条路径(每一步可沿左斜线向下或右斜线向下),使该路径经过的数字总和最大。 3、算法描述 for(i=n-1;i>=1;i--){ for(j=0;j<i;j++) 阅读全文
posted @ 2018-11-10 22:34 邓Loser 阅读(88) 评论(0) 推荐(0) 编辑
摘要: 1、你对动态规划算法的理解 答:动态规划是将一个复杂的问题分解为若干个子问题,同时也是在解决一个问题时,寻找解决该问题的最优解(比喻矩阵的连乘,就是寻找最优解,可以节省大量的时间),这样可以使得算法更加简单,执行更加方便。 2、分别列出编程题1、2的递归方程(2分) (1)将问题转化为求两个序列的最 阅读全文
posted @ 2018-11-10 22:02 邓Loser 阅读(101) 评论(0) 推荐(0) 编辑
  2018年10月14日
摘要: 1、实践题目:二分查找 2、问题描述: 输入n值(1<=n<=1000)、n个非降序排列的整数以及要查找的数x,使用二分查找算法查找x,输出x所在的下标(0~n-1)及比较次数。若x不存在,输出-1和比较次数。 3、算法描述: while(left<=right){ //左右比较 int middl 阅读全文
posted @ 2018-10-14 13:45 邓Loser 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 个人感觉在学习二分法时,首先需要注意的是数据是否有序或者无序,无序的需要先排序。二分法需要找准二分的分界点,这样才能成功继续下一步。二分法的思想相对比较容易理解,也能有效地降低时间复杂度,处理大数据时会有优势。 对于结队编程的方式,个人感觉还是比较实在的,能够与伙伴在交流中理解上课时的一些盲点,同时 阅读全文
posted @ 2018-10-14 11:47 邓Loser 阅读(162) 评论(0) 推荐(0) 编辑