// 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]吧,害我差點懷疑自己的印象
還是感謝所有講解的解題報告,好人一生平安