zoukankan      html  css  js  c++  java
  • hdu3652 数位dp记忆化搜索

    从未见过的船新版本数位dp,,省去了预处理过程,直接进行计算

    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    int dp[20][20][5],n,len,bit[20];
    //dp[i][j][k]:到i位数,前面模13=j,前面是1|不是1|有13的状态已经确定,后面的数的个数 
    //mod:前面%13的余数,flag=0|1|2:pos+1位不是1|是1|有13出现过了,lim:数的限制 
    int dfs(int pos,int mod,int flag,int lim){
        if(!lim && dp[pos][mod][flag]!=-1)//只有在无限制的情况下才能直接返回 
            return dp[pos][mod][flag];
        if(pos<=0)return mod==0&&flag==2; 
        int num,mod_x,flag_x,res=0;
        if(lim)num=bit[pos];else num=9;
        for(int i=0;i<=num;i++){
            mod_x=(mod*10+i)%13;
            flag_x=flag;
            if(flag==0 && i==1)flag_x=1;
            if(flag==1 && i!=1)flag_x=0;
            if(flag==1 && i==3)flag_x=2;
            res+=dfs(pos-1,mod_x,flag_x,lim&&i==num);
        }
        if(!lim)dp[pos][mod][flag]=res;
        return res;
    }
    
    int main(){
        while(cin>>n){
            memset(bit,0,sizeof bit);
            memset(dp,-1,sizeof dp);
            len=0;
            while(n){bit[++len]=n%10;n/=10;}
            cout<<dfs(len,0,0,1)<<endl;
        }
    }
  • 相关阅读:
    C# FileStream 文件复制
    DataSnap Server 客户端调用 异常
    抛出异常 exception
    RAD Tokyo 10.2.2
    delphi ios info.plist
    sql 日期格式
    sql server 2014登录账号
    sql server导入excel数据
    dev16 cxgrid 在DLL里报0地址错
    sql server 查看所有表记录数
  • 原文地址:https://www.cnblogs.com/zsben991126/p/10688699.html
Copyright © 2011-2022 走看看