zoukankan      html  css  js  c++  java
  • hdu2089不要62(数位dp)

    题目大意就是数字中不能出现 62 和4

    代码:

    /*************************************************************************
        > File Name: 2089.cpp
        > Author: minshik
        > Created Time: 2014年05月22日 星期四 00时52分49秒
     ************************************************************************/
    //数位dp 
    //
    #include <string>
    #include <iostream>
    #include <algorithm>
    #include <cstdio>
    #include <cstring>
    #include <vector> 
    #include <list> 
    #include <map> 
    #include <queue> 
    #include <cmath> 
    using namespace std;
    
    int dp[10][3]; //i,j 表示i位 0:没有,1:最后一个是6,2:已经有不符和了
    
    
    int DP(int n)
    {
        bool flag = false;
        int s[15];
        int idx = 0;
        int x = n;
        while(x)
        {
           s[++idx] = x%10;
           x/=10;
        }
        s[idx+1] =0;
        int ans = 0;
        for(int i=idx;i>0;i--)
        {
            ans += (dp[i-1][2]*s[i]);    //之前已经有不符和
            if( flag  )ans+=(dp[i-1][0]*s[i]);
            else
            {
                if( s[i] >4 ) ans+= dp[i-1][0];
                if( s[i] > 6 ) ans+=dp[i-1][1];
                if( s[i+1]==6 && s[i]>2 ) ans+=dp[i][1];
            }
            if( s[i]==4 || s[i+1]==6&&s[i]==2 )
            {
                flag = true;
            }
        }
        return n-ans;
    }
    
    int main()
    {
        dp[0][0] = 1;
        for(int i=1;i<=8;i++)
        {
            dp[i][0] = dp[i-1][0]*9-dp[i-1][1];
            dp[i][1] = dp[i-1][0];
            dp[i][2] = dp[i-1][0]+dp[i-1][1]+dp[i-1][2]*10;
        }
        int n,m;
        while(scanf("%d %d",&n,&m)!=EOF)
        {
            if( n==0 && m ==0 )break;
    
            printf("%d
    ",DP(m+1)-DP(n));
        }
        return 0;
    }
    View Code
  • 相关阅读:
    模式识别 第一章 概论
    高等代数9 欧几里得空间
    离散数学6 初等数论
    高等代数6 线性空间
    高等代数5 二次型
    GMOJ 6870. 【2020.11.17提高组模拟】ckw的树 (tree)
    1
    Virtual Tree 学习笔记
    [2020.11.14提高组模拟] 鬼渊传说(village)
    企业购置新车,各项费用会计入账以及案例分析
  • 原文地址:https://www.cnblogs.com/doubleshik/p/3744841.html
Copyright © 2011-2022 走看看