Java 循环的最长回文子序列
我正在练习一些动态规划问题,我遇到了这个问题- . 我不理解下面代码中的两行代码(来自链接)—— (我已将其标记为1和2)Java 循环的最长回文子序列,java,dynamic-programming,Java,Dynamic Programming,我正在练习一些动态规划问题,我遇到了这个问题- . 我不理解下面代码中的两行代码(来自链接)—— (我已将其标记为1和2) for(int sublen=2;sublen 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; } 否则{ LP[i][j]=Math.max(LP[i+1][j],LP[i][j-1]); } } } 有人能
for(int sublen=2;sublen 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;
}
否则{
LP[i][j]=Math.max(LP[i+1][j],LP[i][j-1]);
}
}
}
有人能帮我理解为什么我们要使用上面代码中的第二行和第三行吗?
在第2行中,他为什么要执行LP.length sublen
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]);
}
}
}