80分求调
查看原帖
80分求调
560901
FlyingDutchman7楼主2023/10/19 20:49
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;

int m,n;
int seat[50][50]={0},step[110][50][50]={0};

int mx(int a1,int a2,int a3,int a4){
	a1=max(a1,a2);
	a3=max(a3,a4);
	return max(a1,a3);
}

int main(){
	cin>>m>>n;
	for(int i=1;i<=m;i++){
		for(int j=1;j<=n;j++){
			cin>>seat[i][j];
		}
	}
	for(int stp=1;stp<m+n-1;stp++){
		if(stp<m&&stp<n){
			for(int i=stp+1;i>1;i--){
				for(int j=1;j<i;j++){
					step[stp][i][j]=mx(step[stp-1][i][j],step[stp-1][i-1][j],step[stp-1][i][j-1],step[stp-1][i-1][j-1])+seat[i][stp-i+2]+seat[j][stp-j+2];
				}
			}
		}else if(stp<m){
			for(int i=stp+1;i>1;i--){
				for(int j=stp-n+1;j<i;j++){
					step[stp][i][j]=mx(step[stp-1][i][j],step[stp-1][i-1][j],step[stp-1][i][j-1],step[stp-1][i-1][j-1])+seat[i][stp-i+2]+seat[j][stp-j+2];
				}
			}
		}else if(stp<n){
			for(int i=m;i>1;i--){
				for(int j=1;j<i;j++){
					step[stp][i][j]=mx(step[stp-1][i][j],step[stp-1][i-1][j],step[stp-1][i][j-1],step[stp-1][i-1][j-1])+seat[i][stp-i+2]+seat[j][stp-j+2];	
				}
			}
		}else{
			for(int i=m;i>1;i--){
				for(int j=stp-n+1;j<i;j++){
					step[stp][i][j]=mx(step[stp-1][i][j],step[stp-1][i-1][j],step[stp-1][i][j-1],step[stp-1][i-1][j-1])+seat[i][stp-i+2]+seat[j][stp-j+2];	
				}
			}
		}
	}
	cout<<step[m+n-2][m][m-1];
	return 0;
}

只拿了80分 第8 10测试点没过 求助

2023/10/19 20:49
加载中...