zoukankan      html  css  js  c++  java
  • hdu 2089 不要62(初学数位DP)

    http://acm.hdu.edu.cn/showproblem.php?pid=2089

    题意:

    给定 m,.n;

    求车牌号 m~n之间 有多少数字 不含 4或62     ,8652是可以的 。

    Sample Input
    1 100 0 0
     

     

    Sample Output
    80
     1 #include <iostream>
     2 #include<stdio.h>
     3 #include<string.h>
     4 #define maxn   11
     5 int dp[maxn][11] ;
     6 using namespace std;
     7 void init()
     8 {
     9     int i,j,k;
    10 
    11     memset(dp,0,sizeof(dp));
    12      dp[0][0] = 1 ;
    13 
    14     for(i = 1 ; i<= maxn ;i++)
    15     {
    16        for(j = 0;j <= 9;j++)
    17        {
    18 
    19            for(k = 0 ; k<=9;k++)
    20            {
    21                 if(j != 4&&!(j== 6&&k == 2))dp[i][j] = dp[i][j] + dp[i - 1][k];
    22 
    23               //if(j == 6&&k!=2)dp[i][j] = dp[i][j] + dp[i - 1][k] ;
    24            }
    25 
    26        }
    27     }
    28 
    29 
    30 
    31 }
    32 
    33 int solve(int x)
    34 {
    35     int i,j ;
    36     int a[maxn];
    37     int len = 0;
    38     while(x)
    39     {
    40         a[++len] = x%10;
    41         x = x/10;
    42     }
    43 
    44     int  ans = 0 ;
    45 
    46       a[++len] = 0;
    47     for(i = len;i > 0;i--)
    48     {
    49 
    50           for(j = 0 ; j < a[i];j++)
    51           {
    52 
    53               if(j == 4||(a[i+1] == 6&&j == 2))continue ;
    54 
    55               ans+=dp[i][j] ;
    56               //printf("%d %d
    ",j,dp[i][j]);
    57           }
    58           if(a[i] == 4||(a[i+1] == 6&&a[i]==2))break;//这里忘记了 WA2次,只因为我们是从高位 到低位
    59           
    60           搞得,当有一位不符合,那么比其大的也不符合 如8456,当我们判断到4时,所有83**(这时我们已经计入了)都是,而84**就不在是了
    61     }
    62 
    63     return ans ;
    64 }
    65 int main()
    66 {
    67    int n ,m;
    68    init() ;
    69 
    70 
    71 
    72    while(scanf("%d%d",&n,&m)!=EOF)
    73    {
    74        if(n == 0 && m ==0)break;
    75         printf("%d
    ",solve(m+1) - solve(n));
    76        //printf("%d
    ",solve(m) - solve(n - 1));
    77    }
    78 }
  • 相关阅读:
    浅谈Linux进程
    POJ 1426 Find The Multiple
    JS JavaScript闭包和作用域
    JS JavaScript深拷贝、浅拷贝
    JS JavaScript中的文档碎片 DocumentFragement JS性能优化
    前端DOM知识点
    JS JavaScript中的this
    JS JavaScript实现杨辉三角
    JS JavaScript事件循环机制
    ES6基本语法
  • 原文地址:https://www.cnblogs.com/acSzz/p/3592784.html
Copyright © 2011-2022 走看看