zoukankan      html  css  js  c++  java
  • hdu 2089 不要62 数位dp入门

    题目链接

    求出a-b中不含有4以及连续的62的数的个数。

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define mem1(a) memset(a, -1, sizeof(a))
     4 int dp[10][10], digit[9], len;
     5 int dfs(int len, bool state, bool fp) {     //state表示这一位是否有限制
     6     if(!len)                                //fp表示len这一位是否只能取到小于等于digit[len]的数, 即这一位能否随便填
     7         return 1;
     8     if(!fp && dp[len][state]!=-1)
     9         return dp[len][state];
    10     int ret = 0, maxx = fp?digit[len]:9;
    11     for(int i = 0; i<=maxx; i++) {
    12         if(i == 4 || i==2&&state)
    13             continue;
    14         ret += dfs(len-1, i==6, fp&&i == maxx); //对于这一题, 当这一位为6的时候, 下一位就会有限制
    15     }
    16     if(!fp)
    17         return dp[len][state] = ret;
    18     return ret;
    19 }
    20 int cal(int n) {
    21     len = 0;
    22     while(n) {
    23         digit[++len] = n%10;
    24         n/=10;
    25     }
    26     return dfs(len, false, true);
    27 }
    28 int main()
    29 {
    30     int a, b;
    31     while(~scanf("%d%d", &a, &b)) {
    32         if(a+b==0)
    33             break;
    34         mem1(dp);
    35         printf("%d
    ", cal(b)-cal(a-1));
    36     }
    37 }
  • 相关阅读:
    【24点游戏】cocos2dx 源码
    『Python题库
    『Python题库
    【python安装】Windows上安装和创建python开发环境
    『Linux基础
    『Linux基础
    『Linux基础
    『Linux基础
    『Linux基础
    『Python基础-14』匿名函数 `lambda`
  • 原文地址:https://www.cnblogs.com/yohaha/p/5035069.html
Copyright © 2011-2022 走看看