求大佬帮忙 20分
查看原帖
求大佬帮忙 20分
676420
StevenLin楼主2022/8/23 22:03

我跟标程对过了,提交是20分,自己又改了改,还是20分,不知道什么情况

#include<bits/stdc++.h>
using namespace std;
int m,n,a[55][55],f[55][55][55][55];
int main(){
	//freopen(".in","r",stdin);
	//freopen(".out","w",stdout);
	cin>>m>>n;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)	cin>>a[i][j];
	
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			for(int k=n;k>=1;k--){
				for(int l=m;l>=1;l--){
					f[i][j][k][l]=a[i][j]+a[k][l]+max(max(f[i][j-1][k-1][l],f[i][j-1][k][l-1]),max(f[i][j-1][k][l-1],f[i-1][j][k-1][l]));
				}
			}
		}
	}
	cout<<f[n][m-1][n-1][m];
	return 0;
}

上面是改过的

#include<bits/stdc++.h>
using namespace std;
int m,n,a[55][55],f[55][55][55][55];
int main(){
	//freopen(".in","r",stdin);
	//freopen(".out","w",stdout);
	cin>>m>>n;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)	cin>>a[i][j];
	
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			for(int k=1;k<=n;k++){
				for(int l=j+1;l<=m;l++){
					f[i][j][k][l]=a[i][j]+a[k][l]+max(max(f[i][j-1][k-1][l],f[i][j-1][k][l-1]),max(f[i][j-1][k][l-1],f[i-1][j][k-1][l]));
				}
			}
		}
	}
	cout<<f[n][m-1][n-1][m];
	return 0;
}

这个是跟标程对的

2022/8/23 22:03
加载中...