题目链接:https://vjudge.net/problem/HDU-2089

题意:给定一段区间求出该区间中不含4且不含连续的62的数的个数。

思路:这周开始做数位dp专题,给自己加油^_^,一直觉得数位dp很牛逼哈哈,个人觉得这位巨佬讲得特别好:https://blog.csdn.net/wust_zzwh/article/details/52100392,超适合初学者。这题似乎是数位dp入门题,也是我第一道数位dp题哈哈。其中有个优化就是将memset放在while循环之外,因为dp保存的信息即dp[pos][sta]:长度为pos+1,上一位为6或不为6的满足题意的数的个数,该性质是所有数共有的,与输入无关,所以一直可以保存。

AC代码:

#include<cstdio>
#include<cstring>
using namespace std; int a[],dp[][],n,m; int dfs(int pos,int pre,int sta,bool limit){
if(pos==-) return ;
if(!limit&&dp[pos][sta]!=-) return dp[pos][sta];
int up=limit?a[pos]:;
int tmp=;
for(int i=;i<=up;++i){
if(i==) continue;
if(pre==&&i==) continue;
tmp+=dfs(pos-,i,i==,limit&&a[pos]==i);
}
if(!limit) dp[pos][sta]=tmp;
return tmp;
} int solve(int x){
int pos=;
while(x){
a[pos++]=x%;
x/=;
}
return dfs(pos-,-,,true);
} int main(){
memset(dp,-,sizeof(dp));
while(~scanf("%d%d",&n,&m),n||m){
printf("%d\n",solve(m)-solve(n-));
}
return ;
}

最新文章

  1. 洛谷CON1041 NOIP模拟赛一试
  2. EF 如何更新少量字段
  3. c#中 HttpWebRequest请求抛异常,基础连接已经关闭: 连接被意外关闭
  4. 编写一个程序,求s=1+(1+2)+(1+2+3)+…+(1+2+3+…+n)的值
  5. JS小数点加减乘除运算后位数增加的解决方案
  6. gcc -fvisibility=hidden,-fPIC选项
  7. Flex布局总结
  8. CCPC总结
  9. Android UI开发第三十四篇——SlidingPaneLayout
  10. UIAlertView弹出框
  11. JavaScript之Ajax
  12. Token注解防止表单的重复提交
  13. 框架应用:Spring framework (五) - Spring MVC技术
  14. Django学习-24-Ajax
  15. python中filter、map、reduce的区别
  16. POJ 3140.Contestants Division 基础树形dp
  17. POJ - 1850 Code(组合数学)
  18. 雷林鹏分享:XML - E4X
  19. 通过javascript 直接播放amr格式的语言
  20. python基础笔记之面向对象

热门文章

  1. python写service时全局变量问题
  2. Excel技巧--分隔工资条
  3. 黄聪:AngularJS最理想开发工具WebStorm
  4. Linux上启动Cron任务
  5. beef + msf 实现内网渗透
  6. Vue2.0学习笔记
  7. python3对excel文件读写操作
  8. python中class的序列化和反序列化
  9. Android 开发 VectorDrawable 矢量图 (三)矢量图动画
  10. Linux下安装GitHub