HDU 2089 不要62 (數字DP)

2021-08-21 11:00:28 字數 625 閱讀 7258

題解

①l~r的符合要求的數字個數,我們可以轉化為1~r的符合要求的數字個數 減去 1~(l-1)的美麗數字個數

②定義dp[pos]為選前pos位的方案數。由於要一位一位的去選,dp方程不太好寫,所以選擇寫記憶化搜尋。首先需要記錄pos(選到了第幾位),pre(上一位選的數字),limit(之前的位是否都選到了上限值)。比如327,如果前兩位選了32,那麼第三位就只能選1~7,如果第一位沒選3或第二位沒選2,那麼第三位就可以選0~9。 

那麼有哪些狀態是重複的需要記憶化呢,不難想到就是dp[pos位(每一位0~9隨便選)]。

#include using namespace std;

const int maxn = 1000005;

int dp[10];

string num;

int dfs(int pos, int pre, bool limit)

if (!limit && pre != 6) dp[pos] = ans;

return ans;

}int solve(int x)

int main()

return 0;}/*

1 100

0 0*/

HDU2089 不要62 數字DP

problem description 杭州人稱那些傻乎乎粘嗒嗒的人為62 音 laoer 杭州交通管理局經常會擴充一些的士車牌照,新近出來乙個好訊息,以後上牌照,不再含有不吉利的數字了,這樣一來,就可以消除個別的士司機和乘客的心理障礙,更安全地服務大眾。不吉利的數字為所有含有4或62的號碼。例如 ...

Hdu2089 不要62 數字dp

include includeint dp 10 3 dp i 0 為位數小於等於i且不含62也不含4的數字的個數 dp i 1 為位數為i且首位為2且不含62也不含4的數字的個數 dp i 2 為位數小於等於i且含62或4的數字的個數 int digit 10 void er int wei in...

hdu 2089 不要62 (數字dp)

思路 用變數記錄吉利數,和最高位為2的吉利數還有不是吉利數的個數。code include include includeusing namespace std int dp 10 3 dp i j i表示位數,j表示狀態 dp i 0 表示不存在不吉利數字 dp i 1 表示不存在不吉利數字,且最...