HDU 3652 B-number 数位dp+记忆化搜索
来源:互联网 发布:vb与台达plc通讯 编辑:程序博客网 时间:2024/06/16 22:37
A wqb-number, or B-number for short, is a non-negative integer whose decimal form contains the sub- string "13" and can be divided by 13. For example, 130 and 2613 are wqb-numbers, but 143 and 2639 are not. Your task is to calculate how many wqb-numbers from 1 to n for a given integer n.
131002001000
1122
基础数位dp和记忆化搜索 直接套模板;
代码如下:
#include<stdio.h>#include<cstring>int dp[20][20][3];int a[20];int dfs(int pos,int pre,int sta,bool limit){if(pos <= 0)return pre==0 && sta==2;if(!limit && dp[pos][pre][sta]!=-1)return dp[pos][pre][sta];int up=limit?a[pos]:9;int tmp = 0;int x , y;for(int i = 0; i <= up; i++){x = (pre*10+i)%13;y = sta;if(sta==0 && i==1)y = 1;if(sta==1 && i!=1)y = 0;if(sta==1 && i==3)y = 2;tmp+=dfs(pos-1,x,y,limit && i==up);}if(!limit)dp[pos][pre][sta] = tmp;return tmp;}int solve(int x){int t = 0;while(x){a[++t] = x%10;x /= 10;}return dfs(t,0,0,1);}int main(){int n;while(~scanf("%d",&n)&&n){memset(dp,-1,sizeof(dp));memset(a,0,sizeof(a));printf("%d\n",solve(n));}return 0;}
阅读全文
0 0
- HDU 3652 B-number(数位DP+记忆化搜索)
- HDU 3652 B-number(数位dp&记忆化搜索)
- HDU-3652 B-number(数位DP+记忆化搜索)
- HDU 3652 B-number 数位dp+记忆化搜索
- hdu 3652 B-number (数位dp+记忆化)
- B-number(数位DP+DFS记忆化搜索)
- hdu3709Balanced Number【数位dp记忆化搜索】
- hdu_3562_B-number(记忆化搜索|数位DP)
- hdu 5179 数位dp+记忆化搜索
- hdu 5898 数位dp,记忆化搜索
- HDU 3709 ZJU 3416 Balanced Number 数位dp 记忆搜索
- hdu 3652(数位dp 记忆化搜索方法)
- HDU 3652 记忆化搜索加 多维数位dp 模板
- HDU 3652--B-number(数位dp)
- HDU 3652 B-number(数位DP)
- [HDU 3652]B-number[数位DP]
- hdu 3652 B-number (数位DP)
- hdu 3652 B-number(数位DP)
- day06_02包 this 封装继承
- POJ 3049 Securing the Barn 笔记
- mysql常用操作汇总(一)
- 【protobuf】protobuf Mac python3
- Java基础知识点笔记(一):java中的取整与四舍五入
- HDU 3652 B-number 数位dp+记忆化搜索
- 指针数组和数组指针
- CDOJ1057-秋实大哥与花
- 用c语言打印100-200之间的素数
- 普通表删除记录很慢
- linux 系统管理命令
- MongoDB 聚合管道(Aggregation Pipeline)
- 高效实用Android Studio (一)
- 【剑指offer】面试题16:数值的整数次方