求两个非重叠回文子序列的最大乘积
2022-09-04 22:40:38
我试图找到字符串的两个非重叠回文子序列的最大乘积,我们将它们称为和。我想出了下面的代码,但它没有给出正确的输出:s
a
b
public static int max(String s) {
int[][] dp = new int[s.length()][s.length()];
for (int i = s.length() - 1; i >= 0; i--) {
dp[i][i] = 1;
for (int j = i+1; j < s.length(); j++) {
if (s.charAt(i) == s.charAt(j)) {
dp[i][j] = dp[i+1][j-1] + 2;
} else {
dp[i][j] = Math.max(dp[i+1][j], dp[i][j-1]);
}
}
}
return dp[0][s.length()-1];
}
对于输入字符串“acdapmpomp”,我们可以选择= “aca”和=“pmpmp”来获得得分3 * 5 = 15的最大乘积。但是我的程序给出的输出为5。a
b