60分 求调
查看原帖
60分 求调
799337
DKsniper楼主2024/5/13 17:02
#include<bits/stdc++.h>
using namespace std;
long long dp[40][40],g[40];
int n,k;
string s;
long long cut(int l,int r){
	long long end=0;
	for(int i=l;i<=r;i++) end=end*10+g[i];
	return end;
}
int main(){
	cin>>n>>k>>s;
	for(int i=1;i<=n;i++) g[i]=s[i-1]-'0';
	for(int i=1;i<=n;i++) dp[i][0]=cut(1,i);
	for(int i=2;i<=n;i++)
		for(int a=1;a<=min(i-1,k);a++)
			for(int b=a;b<i;b++)
				dp[i][a]=max(dp[i][a],dp[b][a-1]*cut(b+1,i));
	cout<<dp[n][k];
	return 0;
}
2024/5/13 17:02
加载中...