hdu 2089 不要62 数位dp入门
2015-12-10 10:02
330 查看
题目链接
求出a-b中不含有4以及连续的62的数的个数。
求出a-b中不含有4以及连续的62的数的个数。
#include<bits/stdc++.h> using namespace std; #define mem1(a) memset(a, -1, sizeof(a)) int dp[10][10], digit[9], len; int dfs(int len, bool state, bool fp) { //state表示这一位是否有限制 if(!len) //fp表示len这一位是否只能取到小于等于digit[len]的数, 即这一位能否随便填 return 1; if(!fp && dp[len][state]!=-1) return dp[len][state]; int ret = 0, maxx = fp?digit[len]:9; for(int i = 0; i<=maxx; i++) { if(i == 4 || i==2&&state) continue; ret += dfs(len-1, i==6, fp&&i == maxx); //对于这一题, 当这一位为6的时候, 下一位就会有限制 } if(!fp) return dp[len][state] = ret; return ret; } int cal(int n) { len = 0; while(n) { digit[++len] = n%10; n/=10; } return dfs(len, false, true); } int main() { int a, b; while(~scanf("%d%d", &a, &b)) { if(a+b==0) break; mem1(dp); printf("%d\n", cal(b)-cal(a-1)); } }
相关文章推荐
- SpriteKit解坑系列(二):tmx地图解析
- swift实际使用中遇到的问题及解决(3)
- centOS下自带安装了apache和php,如何配置呢 ?
- java web项目答辩答辩题总结(书本网上语言答辩+自己的语言答辩)
- Spring整合SpringMVC
- MyEclipse工程高版本换低版本报错
- poj 2361 Tic Tac Toe 五子棋模拟
- 怎样让Git忽略当前已经更改的文件
- socket服务端和client端
- Micro 消息
- 【转】 Ubuntu samba服务器搭建及测试--不错
- Axis,axis2,Xfire以及cxf对比 (转)
- BZOJ2465: [中山市选2009]小球
- 系统盘datePicker、调整Nav后退按钮位置调整,电话短信邮件分享
- 二、C++11多线程std::thread的简单使用(下)
- Spring+Struts2
- 事务回滚的使用
- PHP多维数组遍历方法(2种实现方法)
- 【美工设计 - Adobe Illustrator】基本设置 (图像显示 | 图像缩放 | 置入导出 | 标尺 | 网格 | 参考线 | 画板)
- 【美工设计 - Adobe Illustrator】基本设置 (图像显示 | 图像缩放 | 置入导出 | 标尺 | 网格 | 参考线 | 画板)