题目链接:http://    www.lydsy.com/JudgeOnline/problem.php?id=1026

#include <iostream>

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <math.h>

#include <map>

#include <queue>

#include <algorithm>

using namespace std;





int A[12];





int f[12][10];





//f[i][j]代表长度为i,最高位为j的windy数个数

void init()

{

   memset(f,0,sizeof(f));

   for(int i=0;i<10;i++) f[1][i] = 1;

   for(int i=2;i<=10;i++)

   {

      for(int j=0;j<10;j++)

      {

         for(int k=0;k<10;k++)

         {

            if(abs(j-k)>1) f[i][j] += f[i-1][k];

         }

      }

   }

}

//(0,a)范围内的windy数个数

int calc(int a)

{

   int m = 0;

   while(a)

   {

      A[m++] = a%10;

      a/=10;

   }

   int ans = 0;

   //先处理长度小于m的windy数的个数

   for(int i=1;i<m;i++)

   {

      //题目要求不含前导0

      for(int j=1;j<10;j++)

      {

         ans += f[i][j];

      }

   }

   //长度等于m且最高位和原数不同且小于原数的windy数

   for(int j=1;j<A[m-1];j++) ans += f[m][j];

   //依次循环将最高位 变为和原数相同

   for(int i=m-1;i>=1;i--)

   {

      for(int j=0;j<A[i-1];j++)

      {

         if(abs(j-A[i]) > 1) ans += f[i][j];

      }

      if(abs(A[i] - A[i-1])<=1) break;

   }

   return ans;

}









int main()

{

   #ifndef ONLINE_JUDGE

      freopen("in.txt","r",stdin);

   #endif

   int a,b;

   init();

   while(scanf(" %d %d",&a,&b)!=EOF)

   {

      int ans = calc(b+1) - calc(a);

      printf("%d\n",ans );

   }

   return 0;

}

数位dp无前导零的更多相关文章

  1. poj 3252 Round Numbers(数位dp 处理前导零)

    Description The cows, as you know, have no fingers or thumbs and thus are unable to play Scissors, P ...

  2. bzoj1833: [ZJOI2010]count 数字计数 数位dp

    bzoj1833 Description 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. Input 输入文件中仅包含一行两个整数a.b,含义如上所述. O ...

  3. [poj 3252]数位dp前导0的处理

    通过这个题对于数位dp中前导0的处理有了新的认识. 题目链接:http://poj.org/problem?id=3252 //http://poj.org/problem?id=3252 #incl ...

  4. 【数位DP】题集

    1.[HDOJ2089] 题意:求区间内不出现4和62的数的个数 解法:模板题 2.[HDOJ3555] 题意:求区间内不出现49的数的个数 解法:模板题 3.[HDOJ5179] 题意:对于一个十进 ...

  5. [HAOI2010]计数 数位DP+组合数

    题面: 你有一组非零数字(不一定唯一),你可以在其中插入任意个0,这样就可以产生无限个数.比如说给定{1,2},那么可以生成数字12,21,102,120,201,210,1002,1020,等等. ...

  6. CF 434C Tachibana Kanade's Tofu[数位dp+AC自动机]

    Solution //本代码压掉后两维 #include<cstdio> #define max(a,b) (a<b?b:a) using namespace std; inline ...

  7. [Swust OJ 1097]--2014(数位dp)

    题目链接:http://acm.swust.edu.cn/problem/1097/ Time limit(ms): 1000 Memory limit(kb): 32768   今年是2014年,所 ...

  8. 【数位DP】【SCOI2009】windy数

    传送门 Description \(windy\)定义了一种\(windy\)数.不含前导零且相邻两个数字之差至少为\(2\)的正整数被称为\(windy\)数.\(windy\)想知道, 在\(A\ ...

  9. (转)数位dp

    原博客 https://blog.csdn.net/wust_zzwh/article/details/52100392 建议原博客看到hdu 不要62,然后看我分割线后两道题,然后再回来看原博.-- ...

随机推荐

  1. 好记性不如烂笔头——WebService与Remoting

    一.WebService总体上分为5个层次: 1)HTTP传输信道 2)XML的数据格式 3)SOAP的封装协议,用于传输 4)WSDL的描述方式,用于引用 5)UDDI,通用描述.发现与集成服务,用 ...

  2. Codeforces--630I--Parking Lot(规律)

     I - Parking Lot Crawling in process... Crawling failed Time Limit:500MS     Memory Limit:65536KB  ...

  3. Java 8 实战 P4 Beyond Java 8

    目录 Chapter 13. Thinking functionally Chapter 14. Functional programming techniques Chapter 15. compa ...

  4. (Go)07.strings与strconv的示例

    package main import ( "strconv" "fmt" "strings" ) func main() { str := ...

  5. springboot创建项目

    Springboot作为轻量级快速开发受到无数java人的青睐,Spring Boot是为了简化Spring应用的创建.运行.调试.部署等而出现的,使用它可以做到专注于Spring应用的开发,而无需过 ...

  6. BZOJ 4514 费用流

    思路: 懒得写了 http://blog.csdn.net/werkeytom_ftd/article/details/51277482 //By SiriusRen #include <que ...

  7. sql 系统函数

    --查看表备注SELECT a.column_id AS No, a.name AS 列名, isnull(g.[value],'-') AS 说明 FROM sys.columns a left j ...

  8. .net MVC成长记录(二)

    今天上班的任务完成了,接下来写一下博客,巩固一下,再学习一些新知识. 闲话不多说,我们言归正传.昨天讲到了如何mvc框架在微软下,已经变成了一个非常灵活非常‘干净’的开发框架了, 同时也讲述了如何创建 ...

  9. bootstrap 图片 图标

    一.图片 1.响应式图片:<img src="  " class="responsive"> 2.圆角图片:<img src="  ...

  10. Matlab atan2

    对Matlab不是很熟悉,在这个Matlab atan2 函数上出现了问题. 百度知道上的解释是这样的: atan2() 区别于 atan() 函数,返回 -pi~+pi 范围的角度: 使用过程中发现 ...