最長上升子序列:
- dp[i],以下標i爲結尾的最大長度
- dp[i] = max{ dp[j]+1 | j<i,a[j]<a[i] }
最長公共子序列:
- dp[i][j],串a的前i個和串b的前j箇中最大的公共長度
- if(a[i-1]==b[j-1]) dp[i][j] = dp[i-1][j-1]+1;
else dp[i][j] = max( dp[i-1][j] , dp[i][j-1] );
狀態設定比較正常,轉移方程要思考:
(要注意,串從0下標開始,但dp的下標是指前幾個)
01揹包
+