四道入門區間dp

2021-08-02 20:39:37 字數 485 閱讀 5059

poj-2955

空括號()、,包含或相乘都算子串,問最長子串

([)
也算長度為6

顯然區間dp,對於乙個區間如果兩邊為(),或長度就+2

dp[i][j]表示從i到j的最長

for(i=2;i<=len;i++) //從長度dp

for(j=0;j+i<=len;j++)

表示如果j開頭等於k,那麼這兩個子串相連的時候長度可以少1,就相當dp[j+1][k]+dp[k][i+j-1]的所需步數

這點可以好好想想

然後全部單個字元dp[i][i]=0,當str1[i]==str2[i]的時候

這時候再整體跑一次區間dp即可

想想為什麼k的for可以<=

for(i=2;i<=l1;i++) //dp長度為i的區間

for(j=0;j+i<=l1;j++) //

區間DP入門

區間dp,看名字其實會聯想到劃分dp,其實兩者的關係並不大。劃分dp是從頭到尾劃分解決,並且有劃分數量,而區間dp沒有這些限制條件,可以從任意區間開始,一直擴大到整個區間。不斷遞推求解。同樣也是分兩步去做。首先 還是進行資料處理,比如用陣列sum i j 去儲存i到j的和,或者是用別的方式處理並儲存...

區間DP入門

今天學長給我們講了區間dp,當然聽得雲裡霧裡,講完之後基本處於自閉狀態,然後還是自己到大佬的部落格,然後看部落格,但是並沒有找到很詳細的部落格,所以我想自己寫一寫,大神們勿噴哈.一 定義 區間dp,顧名思義是在區間上dp,它的主要思想就是先在小區間進行dp得到最優解,然後再利用小區間的最優解合併求大...

區間dp入門

區間dp就是區間上的dp,先算出小區間的最優解,再由小區間合併推出大區間的最優解。include include include includeusing namespace std const int inf 0x3f3f3f3f const int maxn 1010 int n int a m...