1. 程式人生 > >【數位dp入門】【HDU2089】62

【數位dp入門】【HDU2089】62

ret main ont scanf size hdu2089 con %d tmp

為了我的點歪的技能樹……

所以開始補一些sb的東西……

#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
int a[20],dp[20][2];
int dfs(int x,int pre,int vis,int lim){
    if(x==-1)return 1;
    if(!lim&&dp[x][vis]!=-1)return dp[x][vis];
    int maxv=lim?a[x]:9;int tmp=0;
    for(int i=0;i<=maxv;i++){
        
if(pre==6&&i==2)continue;if(i==4)continue; tmp+=dfs(x-1,i,i==6,lim&&i==a[x]); } if(!lim)dp[x][vis]=tmp; return tmp; } int solve(int x){ int len=0; while(x){a[len++]=x%10;x/=10;} return dfs(len-1,-1,0,1); } int main(){ int l,r; while(scanf("%d%d",&l,&r)&&(l+r)){ memset(dp,
-1,sizeof(dp)); printf("%d\n",solve(r)-solve(l-1)); } }

【數位dp入門】【HDU2089】62