求助,为什么写了构造函数的结构体,在主函数里开数组会RE
查看原帖
求助,为什么写了构造函数的结构体,在主函数里开数组会RE
490694
Compound_Interest楼主2022/8/17 19:39
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
#include<iostream>
using namespace std;
struct Number{
	int a[400],len;
	void cl(){
		len=1;memset(a,0,sizeof(a));
	}
	Number(){cl();}
	Number(string str){
		cl();
		len=str.length();
		for(int i=0;i<str.length();i++) a[i]=str[str.length()-1-i]-'0';
	}
};//数组开到这能AC
Number operator*(Number x,Number y){
	Number ret;
	ret.len=x.len+y.len;
	for(int i=0;i<x.len;i++)
		for(int j=0;j<y.len;j++){
			ret.a[i+j]+=x.a[i]*y.a[j];
			ret.a[i+j+1]+=ret.a[i+j]/10;
			ret.a[i+j]%=10;
		}
	while(!ret.a[ret.len-1]&&ret.len>1) ret.len--;
	return ret;
}
Number Max(Number x,Number y){
	if(x.len>y.len) return x;
	else if(x.len<y.len) return y;
	else{
		for(int i=x.len-1;i>=0;i--)
			if(x.a[i]<y.a[i]) return y;
			else if(x.a[i]>y.a[i]) return x;
	}
	return x;
}
void print(Number x){
	for(int i=x.len-1;i>=0;i--) printf("%d",x.a[i]);
	printf("\n");
}
int main(){
	int n,k;
	Number dp[70][10],num[70][70];
	scanf("%d%d",&n,&k);
	k++;
	string str;
	cin>>str;
	for(int i=0;i<str.length();i++)
		for(int j=i;j<str.length();j++){
			Number tmp=str.substr(i,j-i+1);
			num[i+1][j+1]=tmp;
		}
	for(int i=1;i<=str.length();i++){
		Number tmp=str.substr(0,i);
		dp[i][1]=tmp;
	}
	for(int j=2;j<=k;j++)
		for(int i=1;i<=n;i++)
			for(int p=0;p<i;p++){
				dp[i][j]=Max(dp[i][j],dp[p][j-1]*num[p+1][i]);
			}
	print(dp[n][k]);
	return 0;
}

题目

如果num和dp数组到结构体上面可以AC,开到主函数里就RE

2022/8/17 19:39
加载中...