數字dp入門

2021-08-21 15:52:15 字數 695 閱讀 1255

數字dp, 顧名思義 對數的位數進行操作。 一般 題目會與數的位數相關。

數字dp最重要的是其dp陣列的確定,根據需要 可以確定多維dp陣列, 一般dp陣列的每一對下標 都只能唯一確定乙個狀態,或者 對結果並不影響。dp陣列一定會有一維表示 當前列舉到的 位數。

模版:

///如 此處設立的dp陣列為二維

int dp[maxn][maxn];

int a[maxn];

int dfs(int pos,int sta,/*可根據需要新增*/,bool limit)

if(!limit) dp[pos][sta] = ans; //有條件的記憶化

return ans;

}int slove(int x)

int ans = 0;

//做相應處理, 但一定會用到 dfs

/*如for(int i = 0;i < (某個值) ;i ++)

ans += dfs(pos-1,sta,(i),(...),true);

*//*或者

ans = dfs(pos-1,sta,(...),true);

*/return ans;

}int main()

return 0;

}

數字DP入門 數字DP模板

數字dp是一種計數用的dp,一般就是要統計乙個區間 le,ri 內滿足一些條件數的個數。所謂數字dp,字面意思就是在數字上進行dp咯。數字還算是比較好聽的名字,數字的含義 乙個數有個位 十位 百位 千位.數的每一位就是數字啦!之所以要引入數字的概念完全就是為了dp。數字dp的實質就是換一種暴力列舉的...

數字DP入門

數字dp顧名思義就是對數字運用dp思想,將每位數看成下一位的子狀態,即個位看成十位的子狀態,十位看成百位的子狀態。下面給出狀態方程 dp i j dp i 1 k k 0,1,2,3.9 dp i j 表示i位數,首位是j的數字有多少符合要求的,我們從低位逐步遞推求到高位。下面拿一道入門題來具體說明...

數字dp入門

數字dp是一種計數用的dp,一般就是要統計乙個區間 le,ri 內滿足一些條件數的個數。所謂數字dp,字面意思就是在數字上進行dp咯。數字還算是比較好聽的名字,數字的含義 乙個數有個位 十位 百位 千位 數的每一位就是數字啦!之所以要引入數字的概念完全就是為了dp。數字dp的實質就是換一種暴力列舉的...