uestc 1307 windy数
2013-10-07 16:47
309 查看
Description
不含前导零且相邻两个数字之差至少为2的正整数被称为windy数。
windy想知道,在A和B之间,包括A和B,总共有多少个windy数?
Input
满足 1 <= A <= B <= 2000000000 。
Output
Sample Input
Sample Output
不错的数位dp!
#include <iostream> #include <stdio.h> #include <math.h> #include <string.h> using namespace std; #define M 23 int dp[M][12],pri[M]; int get(int t,int i,int pre){ if(t==11){ if(i==0)return 11; else return i; } if(fabs(i-pre)>=2)return i; return -1; } int dfs(int pos,int pre,int t,int flag){ if(t==-1)return 0; if(pos==0)return 1; if(!flag&&t>=0&&dp[pos][t]!=-1)return dp[pos][t]; int u=flag?pri[pos]:9,ans=0; for(int i=0;i<=u;i++) ans+=dfs(pos-1,i,get(t,i,pre),flag&&i==u); return flag?ans:dp[pos][t]=ans; } int solve(int x){ int cnt=0; while(x){ pri[++cnt]=x%10; x=x/10; } return dfs(cnt,11,11,1); } int main() { int tcase; int n,m; memset(dp,-1,sizeof(dp)); while( scanf("%d%d",&m,&n)!=EOF){ printf("%d\n",solve(n)-solve(m-1)); } return 0; }
相关文章推荐
- UESTC 1307 windy数
- UESTC-1307-windy数
- UESTC-1307-windy数
- UESTC 1307 windy数
- 简单数位dp,uestc1307
- UESTC 1307 windy数 数位DP
- UESTC 1307
- [数位dp] uestc 250 windy数
- uestc 250 windy数(数位dp)
- UESTC 1307 数位DP (递归 or 非递归)
- UESTC 1307 windy数(数位DP)
- UESTC 1307 —— 数位DP
- uestc1307 windy数 ——数位DP入门题
- uestc 1307 windy数 --- 数位DP
- UESTC 1307 windy数
- UESTC 1307 windy数
- 【数位dp】【HDU 3555】【HDU 2089】【UESTC 1307】【CodeForces 258B】数位DP入门题
- UESTC 250 windy数(数位DP)
- UESTC 250 windy数(数位DP)
- uestc 250 windy数(数位dp)