算法
文章平均质量分 50
额di个神
这个人很懒
展开
-
动态规划算法之最长公共子序列问题
本文转载自https://www.cnblogs.com/Jason-Damon/p/3245443.html一、问题某个序列的子序列是从最初序列通过去除某些元素但不破坏余下元素的相对位置而形成的新序列。比如,BCAB是序列ABCBDAB的一个子序列。而最长公共子序列问题是寻找两个或多个已知序列它们最长的子序列。比如我们要寻找序列ACBDAW和序列DBAW的最长公共子序列,应该是BAW,长...转载 2018-06-13 23:53:03 · 769 阅读 · 0 评论 -
回溯法之01背包问题
一、问题n皇后问题的解空间树是一颗排列树,而01背包问题的解空间树应该是一颗子集树。再简述下该问题:有n件物品和一个容量为c的背包。第i件物品的价值是v[i],重量是w[i]。求解将哪些物品装入背包可使价值总和最大。所谓01背包,表示每一个物品看成一个整体,要么全部装入,要么都不装入。这里n=5, c=10, w={2, 2, 6, 5, 4}, v={6, 3, 5, 4, 6}。01背...原创 2018-08-03 10:48:13 · 2698 阅读 · 1 评论 -
分治法之棋盘覆盖问题
棋盘覆盖问题。。分治法最简单的了。。一、问题在一个个方格组成的棋盘中,恰有一个方格与其它方格不同,称该方格为一特殊方格,且称该棋盘为一特殊棋盘。在棋盘覆盖问题中,要用图示的4种不同形态的L型骨牌覆盖给定的特殊棋盘上除特殊方格以外的所有方格,且任何2个L型骨牌不得重叠覆盖。当k>0时,将棋盘分割为4个 子棋盘(a)所示。 特殊方格必位于4个较小子棋盘之一中,其余3个子棋盘中无特...原创 2018-08-10 21:30:10 · 788 阅读 · 0 评论 -
01背包问题变形
一、问题二、解题思路三、c++代码下面是我自己理解写的,没有根据标准答案的,那答案在讲啥?。。一直没法AC,,不过还是可以解决问题的。n件物品按单位重量价值降序排序,然后回溯法装,右结点必要时剪枝,刚好凑成重量为m的若干件物品才能得到一个解。#include<iostream>#define MAX 50using namespace std;int...原创 2018-08-03 22:20:06 · 868 阅读 · 0 评论 -
动态规划算法之01背包问题-我对递推关系式的理解
一、前提如果你已经仔仔细细读懂了01背包问题的题意,且对动态规划算法的思想有了一定的了解,那就继续吧。如果没有,先看看我转过的关于01背包问题的另一篇博客。 二、分析与理解给定的物品数量为n,总容量为capacity。把背包问题抽象化(X1,X2,…,Xn,其中 Xi 取0或1,表示第 i 个物品选或不选),Vi表示第 i 个物品的价值,Wi表示第 i 个物品的体积(重量),我们知...原创 2018-07-22 12:23:59 · 4177 阅读 · 1 评论 -
回溯法之n皇后问题
一、问题在nxn格的棋盘上放置彼此不受攻击的n格皇后。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n后问题等价于在nxn格的棋盘上放置n个皇后,任何2个皇后不放在同一行或同一列或同一斜线上。二、算法与分析用数组x[i](1≤i≤n)表示n后问题的解。其中x[i]表示皇后i放在棋盘的第i行的第x[i]列。由于不允许将2个皇后放在同一列,所以解向量中的x[i]...原创 2018-07-30 12:03:38 · 7295 阅读 · 0 评论 -
动态规划算法入门
一、问题 公司现在有8个任务,任务1-8的薪水分别是:5、1、8、4、6、3、2、4,有些任务之间是有时间冲突的,比如选了任务8就不能选任务6和7,而选了任务5就不能选任务1、2、3、4、6、7。如图,横轴代表时间,灰色矩形代表每个任务,矩形开始和结束的横坐标分别对应每个任务的开始和结束时间,红色数字代表薪水。比如任务1开始时间是1,结束时间是4,持续了(4-1)即3小时,薪水为5...原创 2018-07-21 12:16:48 · 276 阅读 · 0 评论 -
贪心算法之单源最短路径问题
一、问题给定带权有向图G=(V,E),其中每条边的权是非负实数。另外,还给定V中的一个顶点,称为源。现在要计算从源到所有其它各顶点的最短路长度。这里路的长度是指路上各边权之和。这个问题通常称为单源最短路径问题。二、算法及思想Dijkstra算法是解单源最短路径问题的贪心算法。其基本思想是,设置顶点集合S,并不断地作贪心选择来扩充这个集合。一个顶点属于集合S当且仅当从源到该顶点的最短路径...原创 2018-07-25 17:12:28 · 5901 阅读 · 0 评论 -
贪心算法之活动安排问题
一、贪心算法顾名思义,贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择。当然,希望贪心算法得到的最终结果也是整体最优的。虽然贪心算法不能对所有问题都得到整体最优解,但对许多问题它能产生整体最优解。如单源最短路经问题,最小生成树问题等。在一些情况下,即使贪心算法不能得到整体最优解,其最终结果却是最优解的很好近似。二、例题...原创 2018-07-24 23:26:34 · 2252 阅读 · 0 评论 -
分治法之循环赛日程表的理解和解题思路
一、问题: 设有n=2^k个运动员,要进行网球循环赛。现在要设计一个满足以下要求的比赛日程表 (1).每个选手必须与其他n-1个选手各赛一场 (2).每个选手一天只能赛一次 (3).循环赛一共进行n-1天将比赛日程表设计成n行n列,表中除了第一列,其他n-1列才是我们要的,数组下标行列都从0开始,第i行j列代表第(i+1)位选手在第j天的对手:以8个选手为例子,下面是填表的...原创 2018-06-09 18:05:17 · 15811 阅读 · 8 评论 -
分治法之快速排序算法解题思路
快速排序算法的基本思想是:先找一个基准元素(比如待排序数组的第一个元素),进行一趟快速排序,使得该基准元素左边的所有数据都它小,而右边的所有数据都它大,然后再按此方法,对左右两边的数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数组变成有序序列。比如我们现在对序列arr={-2,6,88,0,-4,56}这6个数进行排序:0 1 2 3 4 5 ...原创 2018-06-10 14:24:04 · 6561 阅读 · 3 评论 -
动态规划算法之矩阵连乘问题思路
本文转载自http://www.cnblogs.com/scarecrow-blog/p/3712580.html【问题描述】给定n个矩阵{A1,A2,…,An},其中Ai与Ai+1是可乘的,i=1,2…,n-1。如何确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要的数乘次数最少。例如,给定三个连乘矩阵{A1,A2,A3}的维数分别是10*100,100*5和5*50,采用(A1A2)...转载 2018-06-10 18:06:46 · 51917 阅读 · 14 评论 -
动态规划算法之01背包问题
本文转载自https://www.cnblogs.com/Christal-R/p/Dynamic_programming.html1、问题:有n 个物品,它们有各自的重量和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和? 比如:number=4,capacity=8 2、原理 动态规划与分治法类似,都是把大问题拆分成小问题,通过寻找大问题与小问题的递...转载 2018-06-12 15:21:21 · 533 阅读 · 0 评论 -
递归之全排列问题
一、问题设计一个递归算法生成n个元素{r1,r2,…,rn}的全排列。二、思路其实就是将整个序列A={,,......}的每个元素一一提到序列A首个位置即A[i] ()处,然后对A[i+1]......A[j]这些元素组成的序列全排列,也就是对除了首元素的剩余序列递归进行全排列,直到剩余序列只剩一个元素,打印当前序列。注意每次将元素调到当前序列首个位置、然后对剩余序列全排列之后,要将元...原创 2018-08-12 21:49:58 · 3195 阅读 · 0 评论