zoukankan      html  css  js  c++  java
  • UESTC 1307 windy数(数位DP)

    题目链接

    这其实入门题,不过,我写了好一会,还是一直wa,图样。。。

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <queue>
     5 #include <map>
     6 #include <ctime>
     7 #include<sstream>
     8 #include <cmath>
     9 #include <algorithm>
    10 using namespace std;
    11 int dp[11][11],sum[11];
    12 int judge(int x)
    13 {
    14     int num[11],i,j,n = 0,pre;
    15     int ans = 0;
    16     if(x == 0)
    17     return 1;
    18     while(x)
    19     {
    20         num[n++] = x%10;
    21         x /= 10;
    22     }
    23     if(n == 1)
    24     {
    25         return num[0] + 1;
    26     }
    27     for(i = 1;i < n;i ++)
    28     {
    29         for(j = 1;j < 10;j ++)
    30         ans += dp[i][j];
    31     }
    32     ans ++;
    33     for(i = 1;i < num[n-1];i ++)
    34     {
    35         ans += dp[n][i];
    36     }
    37     pre = num[n-1];
    38     for(i = n-2; i >= 0; i --)
    39     {
    40         if(i == 0)
    41         {
    42             for(j = 0; j <= num[i]; j ++)
    43             {
    44                 if(max(j,pre)-min(j,pre) >= 2)
    45                 ans ++;
    46             }
    47             break;
    48         }
    49         for(j = 0; j < num[i]; j ++)
    50         {
    51             if(max(j,pre)-min(j,pre) >= 2)
    52             {
    53                 ans += dp[i+1][j];
    54             }
    55         }
    56         if(max(num[i],pre)-min(num[i],pre) < 2) break;
    57         pre = num[i];
    58     }
    59     return ans;
    60 }
    61 
    62 int main()
    63 {
    64     int i,j,k,x,y;
    65     for(i = 0; i < 10; i ++)
    66         dp[1][i] = 1;
    67     for(i = 2; i <= 10; i ++)
    68     {
    69         for(j = 0; j < 10; j ++)
    70         {
    71             for(k = 0; k < 10; k ++)
    72             {
    73                 if(max(j,k)-min(j,k) >= 2)
    74                 {
    75                     dp[i][j] += dp[i-1][k];
    76                 }
    77             }
    78         }
    79     }
    80     while(scanf("%d%d",&x,&y)!=EOF)
    81     {
    82         printf("%d
    ",judge(y)-judge(x-1));
    83     }
    84     return 0;
    85 }
    86                      
  • 相关阅读:
    git 生成公钥与私钥
    Swagger PHP使用指南
    数据库需要支持emoji表情
    Lumen实现用户注册登录认证
    Laraver 框架资料
    php curl请求。header头中添加请求信息
    linux 下看所有用户 及所有组
    瀑布流下滑 发送ajax
    Linux系统中的wc
    Nginx 日志分析及性能排查
  • 原文地址:https://www.cnblogs.com/naix-x/p/3325575.html
Copyright © 2011-2022 走看看