數字DP與記憶化搜尋 HDU3652

2021-07-28 22:02:32 字數 1148 閱讀 8121

上題目b-number

b-number

problem description

a wqb-number, or b-number for short, is a non-negative integer whose decimal form contains the sub- string 「13」 and can be divided by 13. for example, 130 and 2613 are wqb-numbers, but 143 and 2639 are not. your task is to calculate how many wqb-numbers from 1 to n for a given integer n.

input

process till eof. in each line, there is one positive integer n(1 <= n <= 1000000000).

output

print each answer in a single line.

sample input

13 100

200

1000

sample output

1 1 2 2

思路是記憶化搜尋。

//設dp[pos][mod][t][now]

//pos:正在處理的數字,mod:模13的餘數,t:是否包含13,now:結尾的數字(因為記憶化搜尋從高位到低位)

#include

using

namespace

std;

int dp[10][15][2][10],bit[10],len,n;

int dfs(int pos,int mod,bool t,int now,bool flag)//flag:是否有取值限制

int solve(long

long n)

return dfs(len,0,0,0,1);//從最高位開始搜尋,有取值限制

}int main()

}

hdu3555(數字dp記憶化搜尋)

記憶化搜尋解法 include include int64 dp 25 3 dp pos pre pos記錄位數 pre記錄字首狀態0表示字首不包含49且pos 1不是4 1表示字首不包含49且pos 1位是4 2表示字首包含49 int digit 25 存數的各位上的數字 int l 存數的位數...

hdu 3709(數字dp 記憶化搜尋)

平衡數 這道題比較難吧 和以往的數字記憶化搜尋設計的狀態不太一樣 也是用的記憶化dfs 熟練之後應該就沒太大問題了 include include int64 dp 20 20 2010 pos 數字位置 v支點的位置 s 力矩的數值 int digit 20 int64 dfs int pos,i...

hdu 5179 數字dp 記憶化搜尋

dp i j 記錄第i位為j時在非限制條件下的符合條件數的個數 那麼在記憶化搜尋中標記當前狀態是否有限制,當前狀態下是否為 因為最終如果非 要返回1,是0返回0 因為最終要求的數 的取值範圍不包括0 那麼求取時直接算取get m 和get n 1 即可求解 include include inclu...