悬关!!!90pts倒数第2个点RE
查看原帖
悬关!!!90pts倒数第2个点RE
965313
youth191954楼主2024/6/19 13:48
#include<iostream>
#include<cstring>
#include<cstdio>
#define long long int 
using namespace std;
const int mx=1e5+5;
string s;
int n,len;
int num[45][mx],dp[45][mx];
int main(){
	cin>>s>>n;
	len=s.size();
	for(int i=1;i<=len;i++){
		for(int j=i;j<=len;j++){
			num[i][j]=num[i][j-1]*10+(s[j-1]-'0'+0);
		}
	}
	memset(dp,0x3f3f3f3f,sizeof(dp));
	dp[0][0]=-1;
	for(int i=1;i<=len;i++){
		for(int k=0;k<=n;k++){
			for(int j=i-1;j>=0&&num[j+1][i]<=n;j--){
				if(num[j+1][i]<=k){
					dp[i][k]=min(dp[i][k],dp[j][k-num[j+1][i]]+1);
				}
			}
		}
	} 
	if(dp[len][n]<45)cout<<dp[len][n];
	else cout<<-1;
	return 0;
}

求助!!!就还剩一点

2024/6/19 13:48
加载中...