// a[], b[] 為輸入的兩個陣列
for(i=0; i<N1; i++) {
swap(lcs, bac);
for(j=0; j<N2; j++)
if(a[i]==b[j]) lcs[j+1] = bac[j]+1;
else lcs[j+1] = max(lcs[j+1], lcs[j]);
}
for(i=0; i<N1; i++) {
swap(lcs, bac);
for(j=0; j<N2; j++) {
if(a[i]==b[j]) lcs[j+1] = t+1;
else lcs[j+1] = max(lcs[j+1], lcs[j]);
t = lcs[j+1];
}
}
for(i=0; i<N1; i++) {
swap(lcs, bac);
for(j=0; j<N2; j++) {
c = lcs[j+1];
if(a[i]==b[j]) lcs[j+1] = t+1;
else lcs[j+1] = max(lcs[j+1], lcs[j]);
t = c;
}
}
a = b + (b=a)*0;
a = b | (b=a)&0;
for(j=0; j<N2; j++)
t = lcs[j+1] | 0&(
a[i]==b[j] ? t+1 : Math.max(lcs[j+1], lcs[j])
);
if(a[i]==b[j]) lcs[j+1] = bac[j]+1;
else lcs[j+1] = max(lcs[j+1], lcs[j]);
老兄,你max的地方應該是 lcs[j], bac[j+1]吧,害我差點懷疑自己的印象
還是感謝所有講解的解題報告,好人一生平安