该方法是保留两个变量,一个用于最长公共子串(和)的长度和当前公共子串(计数)的长度。当字符不同时,当前公共子目录的长度重置为零,否则将其增加1并相应地更新。 下面是该方法的代码:
void lcss(int i,int j,int count,int& ans,string& a,string& b){
if(i<0 || j<0){
return;
}
if(a[i]==b[j]){
count+=1;
ans = max(count,and);
lcss(i-1,j-1,count,ans,a,b);
}else{
lcss(i-1,j,0,ans,a,b);
lcss(i,j-1,0,ans,a,b);
}
}
上面的代码在以下情况下失败:
WSPD
WSUTPCAFSYAIBJHAMMEGWBTPQELRNKBLDXGUZGCSEC
我无法识别代码中的逻辑错误。