• 【bzoj1026】windy数


    江泽OJ好,远离bzoj保平安。

    仍然沿用之前的记忆化搜索的办法即可。

    #include<bits/stdc++.h>
    #define N 10010
    using namespace std;
    int a[20],dp[20][20];
    int dfs(int x,int pre,int lim){
        if(x==-1)return 1;
        if(!lim&&~dp[x][pre]&&pre>=0)return dp[x][pre];
        int maxv=lim?a[x]:9,ret=0;int st=0;
        for(int i=0;i<=maxv;i++){
            if(abs(i-pre)<2)continue;
            st=i;if(i==0&&pre==-10)st=pre;
            ret+=dfs(x-1,st,lim&&(i==maxv));
        }
        if(pre>=0&&!lim)dp[x][pre]=ret;
        return ret;
    }
    inline int work(int x){
        int len=0;
        while(x){a[len++]=x%10;x/=10;}
        memset(dp,255,sizeof(dp));
        return dfs(len-1,-10,1);
    }
    inline int read(){
        int f=1,x=0;char ch;
        do{ch=getchar();if(ch=='-')f=-1;}while(ch<'0'||ch>'9');
        do{x=x*10+ch-'0';ch=getchar();}while(ch>='0'&&ch<='9');
        return f*x;
    }
    int main(){
        int l=read(),r=read();
        printf("%d
    ",work(r)-work(l-1));
    }
  • 相关阅读:
    C语言I博客作业04
    C语言I博客作业03
    C语言1博客作业02
    作业1
    C语言||作业01
    C语言寒假大作战04
    C语言寒假大作战03
    C语言寒假大作战02
    C语言寒假大作战01
    笔记本
  • 原文地址:https://www.cnblogs.com/zcysky/p/6991493.html
Copyright © 2020-2023  润新知