大佬们,99,wa了sub0的#7和#13
查看原帖
大佬们,99,wa了sub0的#7和#13
938991
zdrtgb159753楼主2025/2/8 09:18
#include<bits/stdc++.h>
using namespace std;
const int N = 50;
long long f[N][N];
int res = -1; 
string s;
int n,len;

void dfs(int pos,int cnt,int sum){
    if(pos == len + 1 && sum == n){
        if(res == -1){
            res = cnt - 1;
        }else{
            res = min(res,cnt - 1);    
        }
        return;
    }
    if(sum + f[pos][len] < n || (pos + 5 <= len && sum + f[pos][len] < n)) return;
    for(int i = pos; i <= len; i++){
        for(int j = i; j <= len && j <= i + 5; j++){
            dfs(j+1,cnt+1,sum+f[i][j]);
        }
    }
}

int main(){
    cin>>s>>n;
    for(int i = 1; i <= s.size(); i++){
        f[i][i] = s[i-1]-'0';
    }
    for(int i = 1; i <= s.size(); i++){
        for(int j = i + 1; j <= s.size(); j++){
            f[i][j] = f[i][j-1]*10+(s[j-1]-'0');
        }
    }
    len = s.size();
    dfs(1,0,0);
    printf("%d",res);
    return 0;
}
2025/2/8 09:18
加载中...