hdu 2089 不要62 數字dp

2021-08-20 23:36:45 字數 854 閱讀 8369

hdu - 2089 

using namespace std;

ll dp[10][10];

int a[10];

void init()

for(int i=1;i<10;i++) //列舉位數

dp[i][j]-=dp[i-1][2];

}else}}

}ll solve(ll n)

ll ans=0;

for(int i=pos-1;i>=1;i--)//從最高位開始即從3開始 每次使列舉的最高位嚴格小於a[i].,這樣就能得到所有的值

{for(int j=0;j>n>>m)

{if(n==0&&m==0)break;

cout《參考了大牛的部落格,發現了遞迴寫法,看起來更簡單一些。

附上遞迴寫法:

#define ll long long

int a[15];

ll f[20][2];

ll dfs(int pos ,int pre,int sta,int limit)

{ if(pos==-1)return 1;

if(!limit&&f[pos][sta]!=-1)return f[pos][sta];

ll cnt=0;

int up=limit? a[pos]:9;

for(int i=0;i<=up;i++)

{if(pre==6 && i==2)continue;

if(i==4)continue;

cnt+=dfs(pos-1,i,i==6,limit&&i==a[pos]);

//cout<<"pos="<>m>>n&&m+n)

{cout<

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