求dalao help me RE#2
查看原帖
求dalao help me RE#2
867875
niveKmAI楼主2023/10/22 11:43
#include<bits/stdc++.h>
using namespace std;
string s;
int n,len;
int a[65];
int k[65][65];
int dp[65][114514];
int main()
{
    cin>>s>>n;
    if(n==0){
    cout<<0;
    return 0;
    }
     len=s.size();
    for(int i=0; i<len; i++) {
        a[i+1]=s[i]-'0';
    }
    for(int i=1; i<=len; i++) {
        k[i][i]=a[i];
        for(int j=i; j-i<=11&&j<=len; j++) {
            k[i][j]=k[i][j-1]*10+a[j];
        }
    }
    memset(dp,0x3f3f3f3f,sizeof(dp));
    dp[0][0]=0;
    for(int i=1; i<=len; i++) {
        for(int j=1; j<=11; j++) {
            if(i>=j) {
                for(int p=k[i-j+1][i]; p<=n; p++) {
                    dp[i][p]=min(dp[i][p],dp[i-j][p-k[i-j+1][i]]+1);
                }
            }
        }
    }
    if(dp[len][n]>len||dp[len][n]==0x3f3f3f3f)cout<<-1;
    else cout<<dp[len][n]-1;
    return 0;
}
2023/10/22 11:43
加载中...