int lps[13][13]={0,0};
int calculate_lps(char *p,int start,int end) {
int i=start;
int j=end;
if(lps[i][j]==0) {
if(i==j)
return lps[i][j]=1;
else if(p[i]==p[j] && i+1==j)
return lps[i][j]=2;
else if(p[i]==p[j])
return lps[i][j]=calculate_lps(p,i+1,j-1)+2;
else
lps[i][j]=max(calculate_lps(p,i+1,j),calculate_lps(p,i,j-1));
}
else return lps[i][j];
}
int main() {
char seq[] = "GEEKSFORGEEKS";
calculate_lps(seq, 0, 12);
cout<<lps[0][12];
return 0;
}
我在最长的回文子序列的动态编程中尝试了自上而下的方法,但我得到的输出是0。
我在这里缺少什么?如何更正我的代码?
提前致谢!