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

    开始学习数位dp...一道昨天看过代码思想的题今天打了近两个小时..最后还是看了别人的代码找bug...(丢丢)

    传说院赛要取消 ? ... 这么菜不出去丢人也好吧~

    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    #include<map>
    #include<math.h>
    #include<queue>
    using namespace std;
    int n,m;
    /// 数位dp 含62与4不吉利
    /// dp数组用来存 第i位 以j开头 的吉利数
    int dp[11][11];
    void init(){
    memset(dp,0,sizeof(dp));
    for(int i=0;i<=9;i++)
        dp[1][i]=1;
    dp[1][4]=0;
    for(int i=2;i<=7;i++)
    {
        for(int j=0;j<=9;j++)
        {
            for(int k=0;k<=9;k++)
            {
                if(j!=4&&!(j==6&&k==2))
                dp[i][j]+=dp[i-1][k];
            }
        }
    }
    }
    int cal(int x){
    if(x==0)
        return 1;
    int A[11];
    int z=0;
    while(x>0)
    {
        z++;
        A[z]=x%10;
        x/=10;
    }
    int ans=0;
    A[z+1]=0;
    for(int i=z;i>=1;i--)
    {
        for(int j=0;j<A[i];j++)
        {
            if(j!=4&&!(A[i+1]==6&&j==2))
                ans+=dp[i][j];
        }
        if((A[i+1]==6&&A[i]==2)||A[i]==4)
            break;
    }
    return ans;
    }
    int main(){
    init();
    while(~scanf("%d%d",&n,&m))
    {
        if(n==0&&m==0)
            break;
        printf("%d
    ",cal(m+1)-cal(n));
    }
    }
    

      

  • 相关阅读:
    数组字符串
    return语句
    函数
    js流程控制语句
    js数据类型
    精进:如何成为一个很厉害的人---书摘(转)
    生成随机的数字和字母组合
    modelAndView重定向到外网
    mysql. 替换数据库中某个字段
    java中对于时间的处理
  • 原文地址:https://www.cnblogs.com/rayrayrainrain/p/5568483.html
Copyright © 2011-2022 走看看