1. 程式人生 > >數位DP模板

數位DP模板

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模板