摘要: 一、题目:工作分配问题 二、问题描述 设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为cij 。 设计一个算法,对于给定的工作费用,为每一个人都分配1 件不同的工作,并使总费用达到最小。 在这里给出一组输入。例如: 在这里给出相应的输出。例如: 9 在这里给出相应的输出。例如: 9 在这 阅读全文
posted @ 2018-12-20 15:30 chenhanwu 阅读(4335) 评论(0) 推荐(0) 编辑
摘要: 一、对回溯算法的理解: 回溯算法首先得确定一下隐式存在的空间树,然后对其进行深度优先搜索,从根节点出发,根结点为一开始的活节点,每次搜索至空间树的任意结点,判断该节点是否包含问题的结,如果包含,则继续深度优先搜索下去,否则,该节点视为死结点,跳过该节点,回溯回到祖先结点(活节点),再将这个活节点视为 阅读全文
posted @ 2018-12-20 11:43 chenhanwu 阅读(424) 评论(0) 推荐(0) 编辑
摘要: 题目来源:王晓东《算法设计与分析》 给定k 个排好序的序列, 用 2 路合并算法将这k 个序列合并成一个序列。 假设所采用的 2 路合并算法合并 2 个长度分别为m和n的序列需要m+n-1 次比较。试设 计一个算法确定合并这个序列的最优合并顺序,使所需的总比较次数最少。 为了进行比较,还需要确定合并 阅读全文
posted @ 2018-11-28 17:30 chenhanwu 阅读(490) 评论(0) 推荐(0) 编辑
摘要: 一、对贪心算法的理解: 1、贪心算法就是一个求解最优化的问题的算法,在算法的每个步骤中,每一次都面临很多选择;在每个决策点选出当前看来最佳的选择,作出局部最优解的选择,以便于推导出全局最优解。 2、求解最优问题有两个关键要素:贪心选择性质以及最优子结构。 贪心选择的性质是当作出选择时,不必考虑子问题 阅读全文
posted @ 2018-11-28 13:41 chenhanwu 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 1、时间题目 2、题目描述 给定一个由 n行数字组成的数字三角形如下图所示。试设计一个算法,计算出从三角形 的顶至底的一条路径(每一步可沿左斜线向下或右斜线向下),使该路径经过的数字总和最大。 输入格式: 输入有n+1行: 第 1 行是数字三角形的行数 n,1<=n<=100。 接下来 n行是数字三 阅读全文
posted @ 2018-11-04 21:26 chenhanwu 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 多态规划是通过将一个大的问题分为多个子问题,并且将子问题再进行划分,一直到求得每个子问题的最优解, 在这个过程中登记子问题的解,不进行子问题的重复计算,大大提升了计算速度。 动态规划分为很种类型的问题,一个问题能否看成一个动态规划的问题,主要看它是否存在 这重复子问题以及最优子结构。 例题 设计一个 阅读全文
posted @ 2018-11-03 01:03 chenhanwu 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 二维数组的指针传递法 很多时候我都是直接通过传入一个 固定的数字来传递一个二维数组, 比如这样子定义函数 int fun(int a[][3],int n) 调用函数是 fun(a,n); 这样子调用的二维数组只能是固定已经知道的,不够灵活性。 以下介绍一下通过指针直接随意设定的二维数组; 定义函数 阅读全文
posted @ 2018-11-02 17:31 chenhanwu 阅读(15631) 评论(0) 推荐(2) 编辑
摘要: 本算法的题目来源《计算机算法与分析》 设a[0:n-1]是已排好序的数组,请改写二分搜索算法,使得当x不在数组中时,返回小于x的最大元素位置i和大于x的最小元素位置j。当搜索元素在数组中时,i和j相同,均为x在数组中的位置。 提示:若x小于全部数值,则输出:-1 0 若x大于全部数值,则输出:n-1 阅读全文
posted @ 2018-10-15 11:33 chenhanwu 阅读(2860) 评论(0) 推荐(0) 编辑
摘要: 1 #include 2 using namespace std; 3 void merge(int a[],int b[],int n,int c[]) 4 { 5 int i=0,j=0,k=0; 6 while(ib[j] && i>n; 30 int *a,*b,*c; 31 a=new int [n]; 32 b=new int [... 阅读全文
posted @ 2018-10-14 11:37 chenhanwu 阅读(1079) 评论(0) 推荐(0) 编辑
摘要: 二分法通过对问题的规模不断缩半,从而使时间复杂度大大降低,在二分法思想中,最坏的情况k次,由2的k次方等于n,可知,最坏的情况下查找log n 次,时间复杂度相对普通的方法而言降低了,在处理大规模问题上就会有明显的好处,比如顺序查找时间复杂度O(n),而二分查找为O(log n) 。在编程的时候,组 阅读全文
posted @ 2018-10-13 15:01 chenhanwu 阅读(397) 评论(0) 推荐(0) 编辑