博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UESTC250:windy数(数位dp)
阅读量:7047 次
发布时间:2019-06-28

本文共 1278 字,大约阅读时间需要 4 分钟。

windy数

Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others)
Submit  Status

windy定义了一种windy数。

不含前导零且相邻两个数字之差至少为2的正整数被称为windy数。

windy想知道,在AB之间,包括AB,总共有多少个windy数?

Input

包含两个整数,AA BB

满足 1AB20000000001≤A≤B≤2000000000 .

Output

Sample input and output

Sample Input Sample Output
1 10
9

Source

Windy
简单数位dp,注意前导0的情况即可。
# include 
# include
# include
int a[11], dp[11][10];int dfs(int pos, int pre, bool sta, int limit){ if(pos == -1) return 1; if(!limit && !sta&& dp[pos][pre] != -1) return dp[pos][pre]; int up = limit?a[pos]:9; int ans = 0; for(int i=0; i<=up; ++i) { if(sta) ans += dfs(pos-1, i, i==0, limit&&i==a[pos]); else if(abs(pre-i)>=2) ans += dfs(pos-1, i, false, limit&&i==a[pos]); } if(!limit && !sta) dp[pos][pre] = ans; return ans;}int solve(int num){ int pos = 0; while(num) { a[pos++] = num%10; num /= 10; } return dfs(pos-1, 0, true, true);}int main(){ memset(dp, -1, sizeof(dp)); int n, m; while(~scanf("%d%d",&n,&m)) printf("%d\n",solve(m)-solve(n-1)); return 0;}

转载于:https://www.cnblogs.com/junior19/p/6730064.html

你可能感兴趣的文章
SCCM客户端推送/卸载
查看>>
Code Signal_练习题_Make Array Consecutive2
查看>>
基于Windows APC写一个简单的多线程并发库
查看>>
C++_异常4-将对象用作异常类型
查看>>
linux 常用命令解压压缩
查看>>
dnsmasq配置
查看>>
ExpandableListView
查看>>
设计模式(单例模式)
查看>>
各种排序算法的Python实现。
查看>>
1.7(学习笔记)过滤器(Fliter)
查看>>
[转载]polya定理再小结
查看>>
mongodb 笔记
查看>>
数据库用户的创建和权限分配
查看>>
jQuery Scroll Path 滚插视图酷炫
查看>>
ARC 基础(上)
查看>>
第十一章
查看>>
java浅拷贝与深拷贝
查看>>
win7&win8.1 x64位系统下在VS2010下配置MPICH2&测试&解决scanf不能输入
查看>>
信息资源管理
查看>>
qt 自定义窗口绘制正弦曲线
查看>>