求助!样例过了但是只有10分
查看原帖
求助!样例过了但是只有10分
668886
fishing_cat楼主2023/2/10 22:04

看不出来哪里错了,请大佬帮助!

#include <bits/stdc++.h>
using namespace std;
int a[210][210],s[210][210],ax[210],num[110];
int maxn=-1;
int main(){
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=i+n-1;j++){
			cin>>a[i][j];
			ax[i]=max(ax[i],a[i][j]);
		}
	for(int i=n+1;i<=2*n-1;i++)
		for(int j=1;j<=3*n-i-1;j++){
			cin>>a[i][j];
			ax[i]=max(ax[i],a[i][j]);
		}
	for(int k=1;k<=2*n-1;k++){
		for(int i=1;i<=2*n-1;i++){
			if(i>=n){
				for(int j=1;j<=i+n-1;j++){
					if(i==k){
						s[i][j]=max(s[i-1][j-1]+ax[i],s[i-1][j]+ax[i]);
					}else{
						s[i][j]=max(s[i-1][j-1]+a[i][j],s[i-1][j]+a[i][j]);
					}
				}
			}else{
				for(int j=1;j<=3*n-i-1;j++){
					if(i==k){
						s[i][j]=max(s[i-1][j]+ax[i],s[i-1][j+1]+ax[i]);
					}else{
						s[i][j]=max(s[i-1][j]+a[i][j],s[i-1][j+1]+a[i][j]);
					}
				}
			}
		}
		for(int i=1;i<=n;i++){
			num[i]=max(num[i],s[2*n-1][i]);
		}
	}
	int sum=-1;
	for(int i=1;i<=n;i++){
		sum=max(sum,num[i]);
	}
	cout<<sum;
	return 0;
}

2023/2/10 22:04
加载中...