使用自上而下方法的最长回文子序列

时间:2017-04-15 11:57:38

标签: c++

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。

我在这里缺少什么?如何更正我的代码?

提前致谢!

0 个答案:

没有答案