摘要: 题目其实很简单,就是你找到两个字符串的最大公共子序列,然后把两个字符串都输入,但是最大公共子序列只输出一次 这道题初看其实很难理解,搞明白了之后我画了一张图,有了它这道题小学生都能做出来啦! 比方说你已经找到了图中的黑线连接的关系(最大公共子序列),那么已按照图中的圆圈圈起来的顺序输出这些字符就好啦 阅读全文
posted @ 2018-04-12 22:07 柳暗花明_liu 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 题目链接 给你若干种面值的硬币,每种硬币有多个,给你一个数字m,问你能用给你的硬币组合出和为1-m之间的几种情况,例如1个两元硬币 2个一元硬币 m=3时 就能组合出来1 2 3 答案就是三 ;m=4时,答案就是4 ;m=5时答案还是4。(难得我解释了一次题意,hh) 如果会01背包与完全背包,多重 阅读全文
posted @ 2018-04-12 16:47 柳暗花明_liu 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 老罗课其实讲得很好,真的,老罗写书的话我可能真的会买 找出状态转移方程然后打表即可 阅读全文
posted @ 2018-04-11 19:00 柳暗花明_liu 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 二维数组 hdu2602 #include <iostream> #include <cstring> using namespace std; const int maxn=4000; int dp[13000]; int d; int w; int n,wl; int main(){ memse 阅读全文
posted @ 2018-04-11 16:57 柳暗花明_liu 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 明天就要考蓝桥杯了,昨天看了2017年省A的题,这个难度真的吓到我,蓝桥杯一点也不水得好吗。。 回忆一下自己学习算法的历程,一切都要从那个悠闲的大二暑假开始说起: 哎开学就大三了,马上就要就业读研了,,,哎,,,心中莫名惆怅,仔细思索,自己成绩尚可,努力一把可以保外,本专业是能源动力工程,好好学习以 阅读全文
posted @ 2018-03-31 10:37 柳暗花明_liu 阅读(1102) 评论(0) 推荐(0) 编辑
摘要: 题意 这道题题意是很有趣的,我记得在勇者斗恶龙六里面有一点,在一个有冰的洞穴里面,人物的移动方式就是这道题所说的方式,不过这道题有一个特殊之处,就是人物碰到墙的同时会在墙面前停下开,同时,面前的墙会消失掉,这就需要我们在遍历时要做好回溯 这道题是要求最少步数,所以一开始我是想用bfs,但是题目有个条 阅读全文
posted @ 2018-03-29 20:46 柳暗花明_liu 阅读(328) 评论(0) 推荐(0) 编辑
摘要: 题目描述 额,这个标题有点不友好,主要是被恶心了两天了,本来很快就写出来,结果超内存,怎么优化都不行,刚才才发现!原因是找最短路时用bfs,没有加visit数组...导致他虽然能出结果,但是搜索了无数次。。。 这道题主要在于方向处理,真正思考过并不难,定义move数组时,按移动方向顺时针定义,然后, 阅读全文
posted @ 2018-03-29 15:40 柳暗花明_liu 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 地址 上一次做八数码的时候,自己把不输出路线的版本写了出来,对于记录路线的,也没去想怎么写,今天做到一个记录路线的dfs,正好写出来 这个代码中记录路线的办法非常清晰易懂,看了就会: 阅读全文
posted @ 2018-03-28 16:11 柳暗花明_liu 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 这个同学写的太好了,于是我又厚颜无耻的借鉴了 修改自:地址 例一:POJ 3070题目:斐波那契数列f(n),给一个n,求f(n)%10000,n<=1e9; (这题是可以用fibo的循环节去做的,不过这里不讲,反正是水题) 矩阵快速幂是用来求解递推式的,所以第一步先要列出递推式: f(n)=f(n 阅读全文
posted @ 2018-03-25 19:25 柳暗花明_liu 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 改编自:地址 第一篇介绍了如何快速求幂,这一篇介绍如何用数字快速求幂的思想,来快速求矩阵之幂 这是求矩阵A、B乘积的代码: 这里我直接写的是n*n的矩阵(即方阵),显然两个相乘是要一行和一列对应乘,那么矩阵乘法是需要A的行数与B的列数相等的(这是A*B的前提条件,可见矩阵的乘法是不满足交换律的)。然 阅读全文
posted @ 2018-03-25 18:47 柳暗花明_liu 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 修改自:地址 快速幂这个东西比较好理解,但实现起来到不老好办,记了几次老是忘,今天把它系统的总结一下防止忘记。 首先,快速幂的目的就是做到快速求幂,假设我们要求a^b,按照朴素算法就是把a连乘b次,这样一来时间复杂度是O(b)也即是O(n)级别,快速幂能做到O(logn),快了好多好多。它的原理如下 阅读全文
posted @ 2018-03-25 18:30 柳暗花明_liu 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 转载自:地址 滚动数组的作用在于优化空间,主要应用在递推或动态规划中(如01背包问题)。因为DP题目是一个自底向上的扩展过程,我们常常需要用到的是连续的解,前面的解往往可以舍去。所以用滚动数组优化是很有效的。利用滚动数组的话在N很大的情况下可以达到压缩存储的作用。 一个简单的例子: 斐波那契数列: 阅读全文
posted @ 2018-03-22 20:08 柳暗花明_liu 阅读(533) 评论(0) 推荐(0) 编辑
摘要: 1、遍历全排列 法一:STL next_permutation(a,a+4); 法二: 2、排列组合 例如求n个数中取5个的全排列,只需把上面if中end改为5+1 3、组合(利用二进制数,妙得很) 阅读全文
posted @ 2018-03-12 19:46 柳暗花明_liu 阅读(220) 评论(0) 推荐(0) 编辑
摘要: stl提供了权排列算法,以后暴力举例就方便多啦 文末有手动求,按字典序排序的全排列的第n个排列,的求法 next_permutation(a,a+4); 检测数组的a[0]到a[3],如果不是“完全倒序”(如:4,3,2,1),就继续执行全排列 prev_permulation(a,a+4); 与上 阅读全文
posted @ 2018-03-12 18:49 柳暗花明_liu 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 题目描述 BFS入门 广度优先搜索相比于深度优先搜索,从形态上差异很明显,一个是先搜索到最深,一个是一层层的先把当前层的每一个都搜索到,顾名思义的话,就是这样子,也确实是这样子。 gw老师的广搜流程图,讲得真的好啊。。 我写这道题时想过:既然广搜是逐层搜索,记录当前进入到第几层了,然后搜索到终点时, 阅读全文
posted @ 2018-03-11 22:27 柳暗花明_liu 阅读(160) 评论(0) 推荐(0) 编辑