dp接近正确方案求挑
查看原帖
dp接近正确方案求挑
1379742
Xiaohaoyu1020明天见_xj楼主2024/7/13 19:33
#include<bits/stdc++.h>
using namespace std;
const int S = 40+5,J = 1e5+5;
int dp[S][J];
int main(){
    int n;
    string s;
    cin>>s;
    cin>>n;
    memset(dp,0x3f,sizeof(dp));
    //f[i][j]以i为结尾,得出答案为j方案最少要用到的
    for(int i = 0;i<=n;i++){
        dp[0][i] = 0;
    }
    for(int i = 1;i<s.size();i++){
        int d = s[i] - '0',w = 1;
        for(int j = i-1;j>=0 && d<=n;j--){
            for(int k = n;k>=d;k--){
                dp[i][k] = min(dp[i][k],dp[j][k-d]+1);
            }
            w*=10;
            d = d+w*(s[j]-'0');
        }
    }
    if(dp[s.size()-1][n] >= 0x3f3f3f3f)cout<<-1;
    else cout<<dp[s.size()-1][n];
}
2024/7/13 19:33
加载中...