hdu-2089 不要62[数位dp]
2016-05-06 08:30
375 查看
比较基础的一道数位dp。
#include <stdio.h> #include <string.h> #include <stdlib.h> #define MAX_SIZE 12 int dp[MAX_SIZE][MAX_SIZE]; int num[MAX_SIZE]; int dfs(int pos,int i,bool lim) { if(pos==-1) return 1; if(!lim&&~dp[pos][i]) return dp[pos][i]; int res=0; int up=lim?num[pos]:9; for(int d=0;d<=up;++d) { if(d==4||(i==6&&d==2)) continue; res+=dfs(pos-1,d,lim&&d==up); } return lim?res:dp[pos][i]=res; } int find(int x) { int i=0; while(x) { num[i++]=x%10; x/=10; } num[i]=0; return dfs(i,0,1); } void init() { memset(dp,-1,sizeof(dp)); } int main() { int n,m; while(~scanf("%d%d",&n,&m)) { if(n==0&&m==0) break; init(); printf("%d\n",find(m)-find(n-1)); } return 0; }
相关文章推荐
- 1012. The Best Rank (25)
- SICP ex 1-27
- 69道Spring面试题和答案
- 大数据实验室(大数据基础培训)——概要
- 一个合格的程序员应该读过哪些书
- 计算机经典算法汇总
- javascript的闭包理解及应用注意
- plsql查询数据显示为乱码解决方法
- XCODE如何像VS(visual studio)一样设置监视变量
- seajs模块化jQuery与jQuery插件
- Servlet基础
- 零散Android 属性
- 查看gpu
- java知识概况
- 网络请求时注意
- HDU1272小希的迷宫
- Java 网络编程1--url 和urlconnection
- Android SurfaceView的基本用法
- 数据结构与算法:C++实现插入排序
- 文本输入框跟随键盘自动展现,监听键盘事件