P1018 为什么这个代码数据下载下来答案是对的,但是提交就错了? 这是数据:6 2 356510 答案:107100
#include<bits/stdc++.h>
using namespace std;
#define int long long
int f[50][10];
int read(){
int f =1,summ=0;
char ch=getchar();
while(ch>'9'||ch<'0'){
if(ch=='-')f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
summ=summ*10+(ch-'0');
ch=getchar();
}
return f*summ;
}
char ar[50];
int a[50][50];
void tran(int n){
for(int i=1;i<=n;i++){
a[i][i]=ar[i]-'0';
for(int j=i+1;j<=n;j++){
a[i][j]=a[i][j-1]*10+ar[j]-'0';
}
}
return;
}
signed main(){
int n=read(),k=read();
for(int i=1;i<=n;i++){
ar[i]=getchar();
}
tran(n);
for(int i=1;i<=n;i++){
f[i][0]=a[1][i];
}
for(int j=1;j<=k;j++){
for(int i=j+1;i<=n;i++){
for(int k=j;k<i;k++){
f[i][j]=max(f[i][j],f[k][j-1]*a[k+1][i]);
}
}
}
printf("%lld\n",f[n][k]);
return 0;
}