algorithm
文章平均质量分 79
Qiang__zi
...
展开
-
亮灯问题
2015盏灯,一开始全部熄灭,序号分别是1-2015,先把1的倍数序号的灯的开关全部按一次,然后把2的倍数的灯的开关全部按一次,然后把3的倍数的开关按一次,以此类推,最后把2015的倍数灯的开关按一次。问最后亮着的灯有多少盏?A. 43B. 44C. 45D. 46参考答案:(B)思路:在1-2015之间所原创 2016-12-15 23:47:01 · 1145 阅读 · 0 评论 -
动态规划解决字符串交错组成问题
给定str1,str2,aim,若aim是仅包含str1,str2中的字符。若aim中属于str1的字符仍然保持在str1中原来的顺序,属于str2的字符仍然保持在str2中原来的顺序,则称aim是str1和str2的交错组成。思路:构造一个(M+1)*(N+1)的矩阵dp:1. dp[0][0]=true.aim为空时可以由str1和str2的空字符串组成2.dp[i][0]表示原创 2017-08-01 23:57:22 · 1633 阅读 · 0 评论 -
换钱的方法数
给定数组arr,arr中所有的值都为整数且不重复。每个值代表一种面值的货币,每种面值的货币可以使用任意张,在给定一个整数aim代表要找的钱数,求换钱的方法有多少种。方法一:利用递归,时间复杂度O(aim^N)arr=[10,b,c...], aim=100,分析过程如下:1.用0张10元的货币,让[b,c......]组成剩下的100,最终方法数记为res1.2.用1张10原创 2017-07-31 16:07:57 · 291 阅读 · 0 评论 -
矩阵的最小路径和
给定一个矩阵m,从左上角开始每次只能向右或向下走,最后到达右下角的位置,路径上所有的数字累加起来就是路径和,返回所有的路径中最小的路径和。若给定的m如下:1 4 9 89 5 8 1214 5 11 1222 13 15 12路径1,4,5,5,11,12,12是所有路径和最小的,所以返回结果50.经典动态规划方法。假设矩阵m的大小为M*N,行数为M,列原创 2017-07-29 22:59:39 · 665 阅读 · 0 评论 -
斐波那契数列数列的三种时间复杂度的实现方法
给定整数N,返回斐波那契数列的第N项斐波那契数列为1,1,2,3,5,8,......也就是除第1项和第2项为1以外,对于第N项,有F(N)=F(N-1)+F(N-2),于是能够很轻松的写出暴力递归的代码。其时间复杂度为O(2^N).int Fibonacci1(int n){ if(n<1)return 0; if(n==1 || n==2) return 1; retu原创 2017-07-29 16:06:56 · 12823 阅读 · 1 评论 -
DP基础
适合采用DP方法的最优化问题中的两个要素:1.最优子结构和重叠子结构问题;2.备忘录方法用来充分利用重叠子问题性质最优子结构:用DP求解优化问题的第一步是描述最优解的结构:若问题的一个最优解中包含了子问题的最优解,则该问题具有最优子结构(该情况下贪心算法也适用。贪心算法与DP的一个显著区别是贪心算法一自顶向下的方式使用最优子结构的,贪心算法先做当时看起来最优的选择,然后在求原创 2017-05-13 22:29:12 · 241 阅读 · 0 评论 -
排序算法
1.快速排序#ifndef _PARTION_H_#define _PARTION_H_#include #include#include#include#includeusing namespace std;void quick_sort(int *arr,int p,int q);int partion(int *arr,int p,int q);void pr原创 2017-03-19 17:14:34 · 186 阅读 · 0 评论 -
KMP算法
KMP算法的引入 KMP算法就能很好地解决冗余问题。 其主要思想为: 在失配后,并不简单地从目标串下一个字符开始新一轮的检测,而是依据在检测之前得到的有用信息(稍后详述),直接跳过不必要的检测,从而达到一个较高的检测效率。 如 ab c d e a b c d e a b c d f原创 2017-02-19 14:58:45 · 231 阅读 · 0 评论 -
约瑟夫环问题
约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。通常解决这类问题时我们把编号从0~n-1,最后结果+1即为原问题的解。假设有num个人,每隔k-1人(即第k个人)出列,求出最后出列的人编号原创 2017-04-04 16:28:15 · 292 阅读 · 0 评论 -
动态规划问题
1、求最长子序列问题描述:子串应该比较好理解,至于什么是子序列,这里给出一个例子:有两个母串 asdfhg zxdfgn比如df、fg、ag在两个字符串中都出现过并且出现顺序与母串保持一致,我们将其称为公共子序列。最长公共子序列(Longest Common Subsequence, LCS),顾名思义,是指在所有的子序列中最长的那一个。子串是要求更严格的一种子序列,要求在母串原创 2016-12-18 10:35:48 · 734 阅读 · 0 评论 -
有关递归的问题
1.一个楼梯有20级,每次走1级或是2级,从底走到顶一共有多少中走法? 算法: 设 n 是阶数,f(n) 是上 n 阶的不同走法数,则第一步可以走一阶或者是两阶,那么这三种情况下剩余的阶数分别为 n-1、n-2, 所以 f(n) = f(n-1) + f(n-2)。#include using namespace std;void solution原创 2017-02-25 17:06:37 · 279 阅读 · 0 评论 -
捕鱼问题
A、B、C、D、E 五个人捕鱼后已凌晨,大家便睡觉。早上A第一个醒来,将鱼均分成五份,把多余的一条鱼扔掉,拿走自己的一份,B第二个醒来,也将鱼均分为五份,把多余的一条鱼扔掉,拿走自己的一份。CDE依次醒来,也按同样的方法拿鱼,问他们合伙至少捕了几条鱼?A. 9B. 31C. 3121D. 3906参考答案:(C)思原创 2016-12-16 16:28:55 · 2968 阅读 · 0 评论 -
N皇后问题
N皇后问题是指在N*N的棋盘上N个皇后,要求任何两个皇后不同行、不同列,也不在同一条斜线上。给定一个整数n,要求皇后的摆法有多少种。方法一:递归暴力解决如果在(i,j)位置(第i行第j列)放置了一个皇后,接下来在哪些位置不能放置皇后呢?1.整个第i行的位置都不能放置2.整个第j列的位置都不能放置3.如果位置(a,b)满足|a-i|==|b-j|,说明(a,b)与(i,j)处在同原创 2017-08-02 16:09:03 · 345 阅读 · 0 评论