程序填空题:两个字符串的最长公共子序列长度
下面程序完成最长公共子序列的长度计算。
#include<stdio.h>
#include<string.h>
#define N 80
int C[N][N]; // 记录最长公共子序列
int rec[N][N]; // 记录轨迹
int LCSLength(char *X, char *Y)
{ int i,j,m=strlen(X),n=strlen(Y);
for(i = 1; i <=m ; i++) {
for(j = 1; j <= n; j++) {
if() {
C[i][j] = C[i-1][j-1] + 1;
rec[i][j] = 1; //LU
}else if() {
C[i][j] = C[i-1][j];
rec[i][j] = 2; //U
}else {
C[i][j] = ;
rec[i][j] = 3; //L
}
}
}
return C[m][n];
}
答案:
第1空:X[i-1] == Y[j-1]
第2空:C[i-1][j] >= C[i][j-1]
第3空:C[i][j - 1]
#include<stdio.h>
#include<string.h>
#define N 80
int C[N][N]; // 记录最长公共子序列
int rec[N][N]; // 记录轨迹
int LCSLength(char *X, char *Y)
{ int i,j,m=strlen(X),n=strlen(Y);
for(i = 1; i <=m ; i++) {
for(j = 1; j <= n; j++) {
if() {
C[i][j] = C[i-1][j-1] + 1;
rec[i][j] = 1; //LU
}else if() {
C[i][j] = C[i-1][j];
rec[i][j] = 2; //U
}else {
C[i][j] = ;
rec[i][j] = 3; //L
}
}
}
return C[m][n];
}
答案:
第1空:X[i-1] == Y[j-1]
第2空:C[i-1][j] >= C[i][j-1]
第3空:C[i][j - 1]