가장 긴 공통 부분 순서 알고리즘에 대한 간단한 질문입니다.가장 긴 공통 부분 순서 printdDiff
String input1="ABCDE"
String input2="ACDC"
int i=input1.length()
int j=input2.length()
: 나는 매개 변수로 사용하는 경우 다음
private static void printDiff(int[][] opt,String x,String y,int i, int j) {
if(i>0 &&j>0 && x.charAt(i-1)==y.charAt(j-1)){
printDiff(i-1,j-1);
System.out.println(x.charAt(i-1));
}
else{
if(j>0&&(i==0||opt[i][j-1]>=opt[i-1][j])){
printDiff(i-1,j-1);
System.out.println("-"+y.charAt(j-1));
}
else if(i>0&&(j==0|| opt[i][j-1]<=opt[i-1][j])){
printDiff(i-1,j-1);
System.out.println(x.charAt(i-1));
}
}
}
그리고 :
public int[][] lcsLength(char[] input1, char[] input2) {
int[][] opt = new int[M][N];
for (int i = 1; i < input1.length; i++) {
for (int j = 1; j < input2.length; j++) {
if (input1[i] == input2[j]) {
opt[i][j] = opt[i - 1][j - 1] + 1;
} else {
opt[i][j] = Math.max(opt[i][j - 1], opt[i - 1][j]);
}
}
}
return opt;
}
을하고 다음과 같은 printDiff 기능 : 난 당신이 다음과 같은 서브 시퀀스를 생성하는 데 필요한 부분을했을
lcsLength()를 사용하여 opt 행렬을 생성 한 후 printdiff woul이 나를 보내 주길 바랍니다.
ABCDE-
A-CD-C
대신 내가 얻을 : 내가 잘못 wiki에서 나에게 많은
감사 로랑
디버거 또는 이전 스타일 * 인쇄 디버깅 *을 사용하여 알고리즘을 단계별로 디버깅하려 했습니까? – MrSmith42
아래 편집을 참조하십시오. – Woot4Moo