摘要: 一、对回溯算法的理解 通过使用循环或者递归,并加以条件限制,简单来说就是穷举法加条件限制。通常按照深度优先来搜索,并不断地回溯再搜索,最终确定解。难点在于如何确定下来搜索的结构以及如何断定是否减枝即确定剪枝函数。 回溯法的基本步骤可总结为: (1)针对所给问题,定义问题的解空间 (2)确定易于搜索的 阅读全文
posted @ 2018-12-23 21:25 Daddy 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 1. 实践题目:工作分配问题 2. 问题描述: 设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为cij 。 设计一个算法,对于给定的工作费用,为每一个人都分配1 件不同的工作,并使总费用达到最小。 输入格式: 输入数据的第一行有1 个正整数n (1≤n≤20)。接下来的n行,每行n个数, 阅读全文
posted @ 2018-12-23 20:05 Daddy 阅读(84) 评论(0) 推荐(0) 编辑
摘要: 1、对动态规划算法的理解: 我对动态规划的理解是见一步走一步,将上一步的结果保存,再进行下一步。思想是将主问题分解成若干个子问题,先求解子问题的解,再通过子问题的解来求出主问题的解。 2、编程题一的递归方程: dp[1]=1,dp[i] = max( dp[i], dp[j] + 1 ) ( j < 阅读全文
posted @ 2018-12-02 18:49 Daddy 阅读(84) 评论(0) 推荐(0) 编辑
摘要: 1、实践题目 最优合并问题 2、问题描述 给定k 个排好序的序列, 用 2 路合并算法将这k 个序列合并成一个序列。 假设所采用的 2 路合并算法合并 2 个长度分别为m和n的序列需要m+n-1 次比较。试设 计一个算法确定合并这个序列的最优合并顺序,使所需的总比较次数最少。 为了进行比较,还需要确 阅读全文
posted @ 2018-12-02 18:47 Daddy 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 1.你对贪心算法的理解(2分) 贪心算法在每次做选择的时候并不从整体最优上加以考虑,它所作出的选择只是当前状态下的最好选择。能用贪心算法解决的问题要具有这两个性质:贪心选择性质和最优子结构性质。 贪心选择性质就是问题的整体最优解可以通过一系列的局部最优的选择,即贪心选择来达到。证明这个性质可以用反证 阅读全文
posted @ 2018-12-02 18:40 Daddy 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 1.实践题目 数字三角形 2.问题描述 给定一个由 n行数字组成的数字三角形如下图所示。试设计一个算法,计算出从三角形 的顶至底的一条路径(每一步可沿左斜线向下或右斜线向下),使该路径经过的数字总和最大。 3.算法描述 代码如下: import java.util.Scanner;public cl 阅读全文
posted @ 2018-11-04 23:04 Daddy 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 1. 实践题目 已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数。有序序列A​0​​,A​1​​,⋯,A​N−1​​的中位数指A​(N−1)/2​​的值,即第⌊(N+1)/2⌋个数(A​0​​为第1个数)。 2. 问题描述 即求两个有序序列并集后的中位数,由于两个有序序列并 阅读全文
posted @ 2018-10-14 19:00 Daddy 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 1、我对二分法思想的体会: (1)在最近做的几道题目中,我发现用简单的循环比较便可以轻易地实现,但当题目对复杂度有要求时,便需要用像二分法这种的思想来实现。因此体会到实现一个功能并不难,难的是怎么去优化它。 (2)通过利用数组中间的数与所查找的数作比较,并瞬间缩小一半的查找范围,当数组大的时候,能省 阅读全文
posted @ 2018-10-14 18:39 Daddy 阅读(105) 评论(0) 推荐(0) 编辑