想知道自己写对了吗
评测记录
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N = 43;
ll a[N], f[N][N];
int n, K;
ll read(){
ll x = 1, s = 0;
char ch = getchar();
while(ch>'9'||ch<'0'){if(ch=='-')x=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){s=s*10+ch-'0';ch=getchar();}
return s * x;
}
ll work(int l, int r){
int sum = 0;
for(int i = l; i <= r; i++){
sum = sum * 10 + a[i];
}
return sum;
}
char s[N];
int main(){
n = read(); K = read();
scanf("%s", s + 1);
for(int i = 1; i <= n; i++)
a[i] = s[i] - '0';
for(int i = 1; i <= n; i++)f[i][0] = work(1, i);
for(int i = 2; i <= n; i++){
for(int k = 1; k <= min(K, i - 1); k++){
for(int j = k; j < i; j++){
f[i][k] = max(f[i][k], f[j][k - 1] * work(j + 1, i));
}
}
}
cout << f[n][K];
return 0;
}