随笔分类 -  算法设计与分析

摘要:这篇博客的内容摘自课本,针对课本中缺少的5道证明题,作为练习,给出证明。 算法运行时所需要的计算机时间资源的量称为时间复杂性。这个量应该集中反应算法的效率,并从运行该算法的实际计算机中抽象出来。换句话说,这个量应该是只依赖于要解的问题的规模、算法的输入和算法本身的函数。 如果分别用 N,I和A 表示 阅读全文
posted @ 2019-12-10 11:45 王陸 阅读(4601) 评论(0) 推荐(2) 编辑
摘要:以深度优先方式系统搜索问题解的算法称为回溯法。在回溯法中,解空间树主要分为了四种子集树、排列树、n叉树和不确定树。 在《算法设计与分析课本》中介绍了11个回溯法的问题样例,这里根据解空间树的类型做一个分类。 子集树 装载问题 符号三角形问题 0-1背包问题 最大团问题 算法模板: void back 阅读全文
posted @ 2019-12-09 20:01 王陸 阅读(1261) 评论(0) 推荐(0) 编辑
摘要:一、问题描述 了解最大团问题(Maximum Clique Problem, MCP)之前需要明白几个概念。复习一下图论知识...... 完全图:如果无向图中的任何一对顶点之间都有一条边,这种无向图称为完全图。 完全子图:给定无向图G=(V,E)。如果U⊆V,且对任意u,v⊆U 有(u,v) ⊆ E 阅读全文
posted @ 2019-11-24 19:32 王陸 阅读(18611) 评论(6) 推荐(4) 编辑
摘要:一、问题描述 有N件物品和⼀个最多能被重量为W 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能⽤⼀次,求解将哪些物品装⼊背包⾥物品价值总和最⼤。 二、问题分析 2.1 确定dp数组以及下标的含义 对于背包问题,有⼀种写法, 是使⽤⼆维数组,即dp[i][j 阅读全文
posted @ 2019-11-23 18:52 王陸 阅读(1291) 评论(0) 推荐(1) 编辑
摘要:一、问题描述 在n×n格的国际象棋上摆放n个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 二、算法设计 解n后问题的回溯算法描述如下: #include <iostream> #include <cstdio> #include <cmath> #in 阅读全文
posted @ 2019-11-06 16:12 王陸 阅读(3465) 评论(0) 推荐(0) 编辑
摘要:一、问题描述 下图所示的三角形中,有14个“+“和14个“-”。2个同号下面是+,两个异号下面是-。 在一般情况下,符号三角形的第一行有n个符号。符号三角形问题,要求对于给定的n,计算有多少个不同的符号三角形,使其所含的“+”和“-”相同。 二、算法分析 用n元组x[1:n]表示符号三角形的第一行的 阅读全文
posted @ 2019-10-30 18:16 王陸 阅读(7083) 评论(3) 推荐(4) 编辑
摘要:之前讲过一个相似的问题流水作业调度问题,那一道题最开始用动态规划,推到最后得到了一个Johnson法则,变成了一个排序问题,有兴趣的可以看一下https://www.cnblogs.com/wkfvawl/p/11667092.html 本篇博客主要参考自https://blog.csdn.net/ 阅读全文
posted @ 2019-10-30 16:15 王陸 阅读(9612) 评论(0) 推荐(3) 编辑
摘要:一、问题描述 N个作业{1,2,………,n}要在由两台机器M1和M2组成的流水线上完成加工。每个作业加工的顺序都是先在M1上加工,然后在M2上加工。M1和M2加工作业i所需的时间分别为ai和bi,1≤i≤n。流水作业高度问题要求确定这n个作业的最优加工顺序,使得从第一个作业在机器M1上开始加工,到最 阅读全文
posted @ 2019-10-13 17:11 王陸 阅读(13935) 评论(11) 推荐(13) 编辑
摘要:一、问题描述 在一块电路板的上下两端分别有n个接线柱。根据电路设计,要求用导线 (i,π(i)),将上端接线柱 i 与下端接线柱 π(i) 相连,如图,其中 π(i),1<=i<=n,是(1,2……,n)的一个排列。导线(i,π(i))称为该电路板上的第i条连线。对于任何 1<=i<s<=n,第i条 阅读全文
posted @ 2019-10-12 11:54 王陸 阅读(8168) 评论(0) 推荐(1) 编辑
摘要:Description 给定一个正整数的集合A={a1,a2,….,an},是否可以将其分割成两个子集合,使两个子集合的数加起来的和相等。例A = { 1, 3, 8, 4, 10} 可以分割:{1, 8, 4} 及 {3, 10},Input第一行集合元素个数n n <=300 第二行n个整数 O 阅读全文
posted @ 2019-10-11 19:43 王陸 阅读(4366) 评论(1) 推荐(3) 编辑
摘要:一、问题描述 多边形游戏是一个单人玩的游戏,开始时有一个由n个顶点构成的多边形。每个顶点被赋予一个整数值,每条边被赋予一个运算符“+”或“*”。所有边依次用整数从1到n编号。 游戏第1步,将一条边删除。 随后n-1步按以下方式操作: (1)选择一条边E以及由E连接着的2个顶点V1和V2; (2)用一 阅读全文
posted @ 2019-10-07 18:51 王陸 阅读(6417) 评论(3) 推荐(2) 编辑
摘要:一、问题描述 多边形是平面上一条分段线性的闭曲线。也就是说,多边形是由一系列首尾相接的直线段组成的。组成多边形的各直线段称为该多边形的边。多边形相接两条边的连接点称为多边形的顶点。若多边形的边之间除了连接顶点外没有别的公共点,则称该多边形为简单多边形。 一个简单多边形将平面分为3个部分:被包围在多边 阅读全文
posted @ 2019-10-07 17:11 王陸 阅读(10287) 评论(4) 推荐(5) 编辑
摘要:Description Given a two-dimensional array of positive and negative integers, a sub-rectangle is any contiguous sub-array of size 1*1 or greater locate 阅读全文
posted @ 2019-09-25 11:28 王陸 阅读(409) 评论(0) 推荐(0) 编辑
摘要:一、问题描述 引出问题之前我们先来复习一下矩阵乘积的标准算法。 int ra,ca;//矩阵A的行数和列数 int rb,cb;//矩阵B的行数和列数 void matrixMultiply() { for(int i=0;i<ra;i++) { for(int j=0;j<cb;j++) { in 阅读全文
posted @ 2019-09-21 19:27 王陸 阅读(16552) 评论(5) 推荐(4) 编辑
摘要:一、问题描述 对应的力扣练习:https://leetcode-cn.com/problems/lian-xu-zi-shu-zu-de-zui-da-he-lcof/ Description 给定有n个整数(可能为负整数)组成的序列a1,a2,...,an,求该序列连续的子段和的最大值。 如果该子 阅读全文
posted @ 2019-09-17 17:28 王陸 阅读(12573) 评论(1) 推荐(4) 编辑
摘要:找出的基准x至少比3(n-5)/10个元素大,因为在每一组中有2个元素小于本组的中位数,中位数处于1/2*[n/5-1]=(n-5)/10,即n/5个中位数中又有(n-5)/10个小于基准x。同理,基准x也至少比3(n-5)/10个元素小。而当n≥75时,3(n-5)/10≥n/4所以按此基准划分所 阅读全文
posted @ 2019-09-13 20:32 王陸 阅读(1568) 评论(0) 推荐(0) 编辑
摘要:关于快速排序的思想图解和C++代码实现,请参考我之前的博客https://www.cnblogs.com/wkfvawl/p/9558002.html 快速排序是基于分治策略的另一种排序算法,其基本思想是,对于输入的子数组a[p:r],按照以下3个步骤进行排序。 private static voi 阅读全文
posted @ 2019-09-13 17:44 王陸 阅读(1403) 评论(0) 推荐(1) 编辑
摘要:参考https://www.cnblogs.com/jinhong123/p/7909689.html n=m1+m2+...+mi; (其中mi为正整数,并且1 <= mi <= n),则{m1,m2,...,mi}为n的一个划分。 如果{m1,m2,...,mi}中的最大值不超过m,即max(m 阅读全文
posted @ 2019-09-08 16:16 王陸 阅读(2205) 评论(0) 推荐(0) 编辑
摘要:算法的C++实现以及基本思想的图解说明,参考我之前的博客 https://www.cnblogs.com/wkfvawl/p/9772447.html 合并排序是利用分治策略对n个元素进行排序的算法,其基本思想是:将待排序元素分为大小大致相同的2个子集合,分别对这两个子集合进行排序,最终将排序好的子 阅读全文
posted @ 2019-09-07 13:52 王陸 阅读(4367) 评论(2) 推荐(2) 编辑
摘要:Description 在一个2k x 2k 个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为一特殊方格,且称该棋盘为一特殊棋盘。在棋盘覆盖问题中,要用图示的4种不同形态的L型骨牌覆盖给定的特殊棋盘上除特殊方格以外的所有方格,且任何2个L型骨牌不得重叠覆盖。 Input k,dr,dc。k 阅读全文
posted @ 2019-09-04 20:46 王陸 阅读(5179) 评论(0) 推荐(2) 编辑