摘要: 一、实践题目 设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为cij 。 设计一个算法,对于给定的工作费用,为每一个人都分配1 件不同的工作,并使总费用达到最小。 输入格式: 输入数据的第一行有1 个正整数n (1≤n≤20)。接下来的n行,每行n个数,表示工作费用。 输出格式: 将计算 阅读全文
posted @ 2018-12-21 16:59 lussww 阅读(128) 评论(0) 推荐(0)
摘要: 一、对回溯法的理解 回溯法是一种搜索方法。用回溯法解决问题时,首先应明确搜索范围,即问题所有可能解组成的范围。这个范围越小越好,且至少包含问题的一个(最优)解。实质就是在构建的解空间的树进行DFS(深度优先搜索)。我认为最重要的设计剪枝函数来避免不必要搜索的解空间,从而大大提高算法的效率,并且这也是 阅读全文
posted @ 2018-12-20 23:41 lussww 阅读(137) 评论(0) 推荐(0)
摘要: 一、实践题目 7-2删除问题 二、问题描述 给定n 位正整数a,去掉其中任意k≤n 个数字后,剩下的数字按原次序排列组成一个新的正整数。对于给定的n位正整数a 和正整数k,设计一个算法找出剩下数字组成的新数最小的删数方案。 三、算法描述 每次对序列从左到右遍历,找到递增序列的最后一个数,删去,循环k 阅读全文
posted @ 2018-11-27 21:40 lussww 阅读(108) 评论(0) 推荐(0)
摘要: 一、对贪心算法的理解 在每一次的选择中,都是选择当前看来的最优选择,最后得到一个问题的(全局的)最优解。我认为这十分符合我们人的正常思维。但其实正常适用贪心算法的问题不多,所以在选择贪心算法的时候一定先考虑好是否能通过贪心得到(全局的)最优解。 二、汽车加油问题的贪心选择性质 每次加满油后,除非无法 阅读全文
posted @ 2018-11-27 21:05 lussww 阅读(102) 评论(0) 推荐(0)
摘要: 一、实践题目 给定一个由 n行数字组成的数字三角形如下图所示。试设计一个算法,计算出从三角形 的顶至底的一条路径(每一步可沿左斜线向下或右斜线向下),使该路径经过的数字总和最大。 输入格式: 输入有n+1行: 第 1 行是数字三角形的行数 n,1<=n<=100。 接下来 n行是数字三角形各行中的数 阅读全文
posted @ 2018-11-09 11:09 lussww 阅读(179) 评论(0) 推荐(0)
摘要: 一、对动态规划算法的理解 即是把一个问题分解为若干个子问题,子问题和原问题很相像,但规模较小了。在解决一个一个子问题后就可以解决原问题。 二、编程题二的方程 1、7-1 单调递增最长子序列 (20 分) 其中res[i]序列中,以下表为i的元素为单调递增子序列最后一个元素的序列长度 m用来表示res 阅读全文
posted @ 2018-11-04 19:45 lussww 阅读(151) 评论(0) 推荐(0)
摘要: 一、实践题目 改写二分搜索算法 二、问题描述 设a[0:n-1]是已排好序的数组,请改写二分搜索算法,使得当x不在数组中时,返回小于x的最大元素位置i和大于x的最小元素位置j。当搜索元素在数组中时,i和j相同,均为x在数组中的位置。 输入格式: 输入有两行: 第一行是n值和x值; 第二行是n个不相同 阅读全文
posted @ 2018-10-21 09:29 lussww 阅读(1952) 评论(0) 推荐(0)
摘要: 一、对于二分法的理解 二分法起源于数学中找函数零点的问题: 对于区间[a,b]上连续不断且f(a)·f(b)<0的函数y=f(x),通过不断地把函数f(x)的零点所在的区间一分为二,使区间的两个端点逐步逼近零点,进而得到零点近似值的方法叫二分法。 当我们把这个思想应用于算法的时候,也产生了神奇的效果 阅读全文
posted @ 2018-10-16 23:27 lussww 阅读(188) 评论(1) 推荐(0)