数位DP模板
Posted hinata_hajime
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数位DP模板相关的知识,希望对你有一定的参考价值。
#include<cstdio> #include<iostream> #include<cstring> using namespace std; int a[50]; int dp[50][50]; int dfs(int num, ,bool limit) //位数,传递条件 ,上界判断 { if(num==-1)return 0; //最后一位时,根据情况返回1或0 if(!limit && dp[num][ ]!=-1) //已经走过此种状态 return dp[num][ ]; int ans=0; //计数 int up=limit?a[num]:9; //上界 for(int i=0;i<=up;i++){ ans+=dfs(num-1, ,limit && i== up);//传递 } if(!limit) //判断是否可以储存 dp[num][ ]=ans; return ans; } int solve(int x) //将x拆开存入a数组 { int num=0; while(x){ a[num]=x%b; //b表示进制!!! num++; x/=b; } return dfs(num-1, ,true);//传递 } int main() { int l,r; while(scanf("%d%d",&l,&r)!=EOF) { memset(dp,-1,sizeof(dp)); printf("%d\n",solve(r)-solve(l-1)); } return 0; }
以上是关于数位DP模板的主要内容,如果未能解决你的问题,请参考以下文章