循环的最长回文子序列

时间:2015-11-20 23:14:22

标签: java dynamic-programming

我正在练习一些动态编程问题,我遇到了这个问题 - http://algorithms.tutorialhorizon.com/longest-palindromic-subsequence/

我不理解以下代码中的两行(来自链接) - (我已将它们标记为1和2)

 for(int sublen = 2;sublen<=chars.length;sublen++){ 
                for(int i=0;i<=LP.length-sublen;i++){ //--> 1
                    int j = i+sublen-1; // --> 2 
                    if(chars[i]==chars[j] && sublen==2){
                        LP[i][j] = 2;
                    }
                    else if(chars[i]==chars[j]){
                        LP[i][j] = LP[i+1][j-1]+2;
                    }
                    else{
                        LP[i][j] = Math.max(LP[i+1][j],LP[i][j-1]);
                    }
                }
            }

任何人都可以帮助我理解为什么我们使用上面代码中的第2行和第3行? 在第2行,他为什么要LP.length-sublen

0 个答案:

没有答案