私は最長共通サブシーケンスの動的プログラミングアルゴリズムを作成しようとしています。 戻り値はこのサブシーケンスの長さである必要があります。 しかし、私のアルゴリズムは常に0を返します。私はエラーを見つけることができませんでした。Javaでの最長共通サブシーケンスの動的プログラミングアルゴリズム
public static int LCS(String A, String B, int m, int n) {
int table[][] = new int[m + 1][n + 1];
for (int i = 0; i < m; i++) {
table[i][0] = 0;
}
for (int i = 1; i < n; i++) {
table[0][n] = 0;
}
for (int i = 1; i < m; i++) {
for (int j = 1; j < n; j++) {
if (A.charAt(i) == B.charAt(j)) {
table[i][j] = table[i - 1][j - 1] + 1;
} else {
table[i][j] = max(table[i][j - 1], table[i - 1][j]);
}
}
}
return table[m][n];
}
private static int max(int a, int b) {
return (a > b) ? a : b;
}
public static void main(String args[]) {
Scanner in = new Scanner(System.in);
System.out.println("Your input words:\n");
String x = in.nextLine();
String y = in.nextLine();
in.close();
int m = x.length();
int n = y.length();
System.out.println("Length of LCS is " + LCS(x, y, m, n));
}
どのような値でテストしましたか? – Andreas
メソッドが戻る前に 'table'はどのように見えますか? –