數位DP模板
阿新 • • 發佈:2017-08-20
return 判斷 set color ++ 上界 pac memset class
#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模板