数位dp

数位dp的入门题
HDU - 2089 不要62
题意:求区间[n,m]之间,不含有4和(连续的)62的数字个数。
分析:emm就是一道数位dp的入门题嘛。

方法1:
dp[i][j]含义为 i位数,其中首位为j的,满足题意的数字个数。
初始条件 dp[0][0]=1;


递推式

其思想就是把这个数字拆开,从最高位开始,把满足条件的数字直接加上。
例如54321:我们知道了满足条件的小于10000的数字个数,那么[0,1e4],[1e4,2e4],[2e4,3e4],[3e4,4e4]中满足条件个数是相同的。
同理可向下推,好了我困死了,然后网上更多的好像是其他方法,emm挖坑X1,而且昨天又有一道数位dp的题emm挖坑X2;

其中,代码的这一段:

for(int i=len;i>=1;i--){
    for(int j=0;j

第一个if表示:如果原数字第i+1位是6,那么在第i位如果是2(j==2),那么ans+=0;
第二个if表示:如果原数字在第i位是4,或者 第i+1位是6,i位是2,那么接下来的数字不管怎么弄,都会在i位(4)或者i+1位(62)存在不要的数字,所以直接break;

你可能感兴趣的:(数位dp)