火烧云20分球条
查看原帖
火烧云20分球条
774823
yuhaotian000楼主2025/6/21 10:31
#include <bits/stdc++.h>
using namespace std;
char c[45];
int a[45],f[45][100005],val[45][45];
int main(){
    int n,m;
    cin>>c>>m;
    n=strlen(c);
    for(int i=0;i<n;i++){
        a[i+1]=c[i]-'0';
    }
    for(int i=1;i<=n;i++){
		val[i][i]=a[i];
		for(int j=i+1;j<=n;j++){
			val[i][j]=val[i][j-1]*10+a[j];
            if(val[i][j]>m){
                break;
            }
        }
	}
    for(int i=1;i<=n;i++){
        for(int v=0;v<=m;v++){
            for(int j=0;j<i;j++){
                if(v>=val[j+1][i]){
                    f[i][v]=min(f[i][v],f[j][v-val[j+1][i]])+1;
                }
            }
        }
    }
    cout<<f[n][m];
}
2025/6/21 10:31
加载中...