题目链接: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. oc42--引用计数器

    /* main.m 堆里面的内存释放是根据引用计数器,所以就是操作引用计数器. 创建一个对象,对象里面就有一个引用计数器,有多少指针指向它. 引用计数器为0就释放.任何一个对象初始化时就是1,所以 { ...

  2. Git 少用 Pull 多用 Fetch 和 Merge 【已翻译100%】【转】

    本文转载自:https://www.oschina.net/translate/git-fetch-and-merge?lang=chs&page=1# 本文有点长而且有点乱,但就像Mark ...

  3. Linux Framebuffer驱动框架之二软件架构(未完待续)【转】

    本文转载自:http://blog.csdn.net/gqb_driver/article/details/12918547 /************************************ ...

  4. bzoj2120 数颜色——带修莫队

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2120 带修改的莫队: 用结构体存下修改和询问,排好序保证时间后就全局移动修改即可: 参考了T ...

  5. DCloud-MUI:代码块

    ylbtech-DCloud-MUI:代码块 1.返回顶部 1. 怎么用? html      此底色代表最小触发字符      此底色代表非必要完整触发字符 *需HBuilder7.1+,或者下载m ...

  6. 第11课 Git GUI程序的基本功能

    11-1 Git GUI程序的基本操作

  7. 原生JS---5

    原生js学习笔记5——BOM操作 什么是BOM BOM:Browser Object Model 是浏览器对象模型,浏览器对象模型提供了独立与内容的.可以与浏览器窗口进行互动的对象结构,BOM由多个对 ...

  8. RabbitMQ安装后,BADARG问题

    最近RabbitMQ安装后始终不能运行,发现异常关键信息如下 =CRASH REPORT==== 10-Nov-2017::13:41:09 === crasher: initial call: ap ...

  9. POJ 1101 译文

    The Game 题意: Description One morning, you wake up and think: "I am such a good programmer. Why ...

  10. (转)Vue 爬坑之路(一)—— 使用 vue-cli 搭建项目

    vue-cli 是一个官方发布 vue.js 项目脚手架,使用 vue-cli 可以快速创建 vue 项目,GitHub地址是:https://github.com/vuejs/vue-cli 一. ...