zoukankan      html  css  js  c++  java
  • 数位dp HDU

    https://cn.vjudge.net/problem/HDU-2089

    题意:

    题意:给定一个区间,求区间中不包含4、连续的62的数字有几个。

    分析:基础的数位dp,利用开多维的dp数组和 dfs 的多个参数来实现各种限制条件,从高位到低位dfs,并且多用 if 判断,结尾 return 1。   ( 用dig[] 保存数位,ans 基本框架为 sol(m) - sol(n - 1) )

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    
    const int maxn = 30;
    int dig[maxn];
    int dp[maxn][2][2];
    
    int dfs(int pos, int six, int flag) {
        if (pos < 0) return 1;
        if (dp[pos][six][flag] != -1) return dp[pos][six][flag];
        int res = 0;
        for (int i = 0; i <= 9; i++) {
            if (six && i == 2) continue;
            if ( i == 4) continue;
            if (flag && i > dig[pos]) continue;
            res += dfs( pos - 1, i == 6, flag && i == dig[pos] );
        }
        return dp[pos][six][flag] = res;
    }
    
    int sol(int x) {
        if (x < 0) return 0;
        memset(dp, -1, sizeof(dp));
        int cnt = 0;
        while (x) {
            dig[cnt++] = x % 10;
            x /= 10;
        }
        return dfs(cnt - 1, 0, 1);
    }
    
    int main() {
        int n, m;
        while (~scanf("%d%d", &n, &m)) {
            if (n == 0 && m == 0) break;
            printf("%d
    ", sol(m) - sol(n - 1));
        }
    }
  • 相关阅读:
    opengl一些基础函数-- 缓冲区
    width = 100%??
    设置scrollTop无效
    es5与es6继承区别
    immutable-treeUtils树的理解
    react 事件绑定
    es-6 class
    es6-Module语法
    es6--set数组去重,Map数据结构
    promise对象
  • 原文地址:https://www.cnblogs.com/-Zzz-/p/11415879.html
Copyright © 2011-2022 走看看