求助
  • 板块学术版
  • 楼主kmltz
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/3/6 15:36
  • 上次更新2024/3/6 18:19:56
查看原帖
求助
1064275
kmltz楼主2024/3/6 15:36

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;
}

2024/3/6 15:36
加载中...