洛谷P2679 [NOIP2015]子串【DP】
- 这里用了两种思路实现,第一种就是普通的递归方法,但由于时间复杂度比较高,所以无法过oj。
- 第二种实现思路是dp,作为菜鸟的我还是看了别人的教程后自己才能写出来,这里用到了滚动数组优化空间的方式,具体的思路在下面的代码注释中。
#include <iostream>
#include "string"
#include "map"
using namespace std;
const int mod=1e9+7;
//递归方法,这种方法好想,但是循环次数过多,时间复杂度较高,无法过oj
int findSubStr(string a,string b,int indexa,int indexb,int t){
if(a.length()==0||b.length()==0||(t==0&&indexb<b.length())||(t!=0&&indexa==a.length())){
return 0;
}
if((t==0)&&(indexb==b.length())&&(indexa<=a.length())){
return 1;
}
int ans=0;
map<string,int> memory;
for(int i=indexa;i<a.length()