可爱萌新代码求调
查看原帖
可爱萌新代码求调
1248522
mlvx楼主2024/1/27 13:35

RT,想用数位DP做,但是连样例都过不了,不知道哪里有问题

#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll n,l,num[20],dp[20][20];
ll dfs(int x,int sum,int limit,int one){
    if(!x)return sum;
    if(!limit&&dp[x][sum]!=-1)return dp[x][sum];
    int maxc=limit?num[x]:9;ll ret=0;
    for(int i=0;i<=maxc;i++)ret+=dfs(x-1,sum+(one&&i==1),limit&&i==maxc,one&&i==1);
    if(!limit)dp[x][sum]=ret;
    return ret;
}int main(){
    memset(dp,-1,sizeof dp);
    cin>>n;
    while(n)num[++l]=n%10,n/=10;
    cout<<dfs(l,0,1,1);
    return 0;
}
2024/1/27 13:35
加载中...