![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
weixin_38343552
这个作者很懒,什么都没留下…
展开
-
最大回文子串
#include<iostream> #include<string> #include<algorithm> using namespace std; int Manacher(string oriStr) { string newStr; int len = oriStr.size(); for (int i = 0; i <...原创 2019-07-31 16:59:36 · 90 阅读 · 0 评论 -
火车进出站加全排列
题目描述 给定一个正整数N代表火车数量,0<N<10,接下来输入火车入站的序列,一共N辆火车,每辆火车以数字1-9编号。要求以字典序排序输出火车出站的序列号。 输入描述: 有多组测试用例,每一组第一行输入一个正整数N(0<N<10),第二行包括N个正整数,范围为1到9。 输出描述: 输出以字典序从小到大排序的火车出站序列号,每个编号以空格隔开,每个输出序列换行,具体见sam...原创 2019-08-05 10:50:49 · 136 阅读 · 0 评论 -
字符串最小编辑代价
#include #include #include using namespace std; int main(){ string s1,s2; while(getline(cin,s1)&&getline(cin,s2)) { int n=s1.size(),m=s2.size(); vector<vector> dp(n+1,vector(m+1));/dp...原创 2019-08-05 10:51:29 · 263 阅读 · 0 评论 -
斐波拉契的几种解法
斐波拉契队列 1,1,2,3,5,8,… 递归实现 时间复杂度O(2n次方) int f1(int n) { if(n < 1) return 0; if(n == 1 || n == 2) { return 1; } return f1(n-1)+f1(n-1); } 顺序计算 时间复杂度O(n) int f2(int n) { if(n <...原创 2019-08-05 16:31:09 · 217 阅读 · 0 评论 -
N年后奶牛的数量
题目 假设农场中成熟的母牛每年只会生1头小母牛,并且永远不会死。第一年农场只有一只成熟的母牛,从第二年开始生小母牛。每只小母牛三年之后成熟又可以生小母牛。给定整数N,求N年后的数量。 递归实现 O(n2) int c1(int n) { if (n < 1) return 0; if (n == 1 || n == 2 || n == 3) ...原创 2019-08-05 17:12:04 · 362 阅读 · 0 评论 -
找钱最少货币数
题目1 给定数组arr,arr中所有的值都为正数且不重复。每个值代表一种面值的货币,每种货币都可以使用任意张,再给定一个整数aim代表要找的钱数,求组成aim的最少货币数。 dp[i][j] 表示前i中货币组成钱数j所用的最小货币数,那么dp[i][j] 等于 min(dp[i-1][j], dp[i][j-array[i]]+1) dp[i-1][j] 就是前一个货币组成钱数j所用的最小货币数...原创 2019-08-06 11:16:47 · 262 阅读 · 0 评论 -
KMP算法
vector<int> getNext(string target) { vector<int> next(target.length(), 0); next[0] = -1; int k = -1; int j = 0; while (j < target.length() - 1) { if (k == -1 || target[j] == ta...原创 2019-08-06 15:25:04 · 71 阅读 · 0 评论 -
查找两个字符串a,b中的最长公共子串
题目描述 查找两个字符串a,b中的最长公共子串。若有多个,输出在较短串中最先出现的那个。 输入描述: 输入两个字符串 输出描述: 返回重复出现的字符 示例1 输入 abcdefghijklmnop abcsafjklmnopqrstuvw 输出 jklmnop 思路用动态规划的方法实现dp[i][j] 表示字符串a的前i-1个字符 和字符串b的前j-1个字符的公共子串长度 如果a[i-1]==...原创 2019-08-02 14:43:31 · 805 阅读 · 0 评论 -
快排
int partaion(int arr[], int begin, int end) { int small = begin - 1; for (int i = begin; i < end; i++) { if (arr[i] < arr[end]) { small++; if (small != i) { swap(arr[small], ...原创 2019-08-09 15:32:34 · 92 阅读 · 0 评论