hdu 2089 不要62(數字DP入門)

2021-08-15 05:35:43 字數 699 閱讀 7312

【題意】

給定一段區間(0~1000000),求這段區間內不含62和4的個數

【個人感悟】

第一次做數字dp,查閱了好多資料,有用遞推做的,也有用記憶化搜尋做的,我主要針對記憶化搜尋做談談我對數字dp的拙見。當然這道題是0~1000000,打表也是可以過的。

數字dp之所以不會超時,就在於他在數字搜尋中新增了記憶化功能,即為mem陣列,mem[i][j],i代表i位數,j代表上一位是否為6兩種狀態,當搜尋過相同的mem[i][j]時,return 即可,但是有乙個前提條件limit != 0,意思就是假如要搜尋256以內的數,對於相同的56,百位為1和為2有不同的結果,因為百位為2有limit限制。這篇題解講得很好

#include #include #include using namespace std;

int bit[8], mem[8][2];

//dfs返回結果,即乙個len位的符合要求的數的個數

int dfs(int len, bool lim, bool preis_6)

if(!lim) mem[len][preis_6] = ans;

return ans;

}int sol(int n)

return dfs(len, 1, 0);

}int main()

return 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 表示不存在不吉利數字,且最...