$help!$
查看原帖
$help!$
182533
Akwamaryna楼主2020/5/5 10:05
#include<cstring>
#include<iostream>
using namespace std;
int n,m,map[55][55],f[105][55][55];
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			cin>>map[i][j];
	memset(f,-1,sizeof(f));
	for(int stage=1;stage<=n+m-1;stage++)
		for(int p1=1;p1<=stage;p1++)
			for(int p2=1;p2<=stage;p2++)
			{
				int q1=stage-p1+1;
				int q2=stage-p2+1;
				if(p1<1||p1>n||q1<1||q1>m)continue;
				if(p2<1||p2>n||q2<1||q2>m)continue;
				for(int d1=0;d1<=1;d1++)
					for(int d2=0;d2<=1;d2++)
					{
						int x1=p1+d1;
						int y1=q1+d1;
						int x2=p2+d2;
						int y2=q2+d2;
						if(x1<1||x1>n||y1<1||y1>m)continue;
						if(x2<1||x2>n||y2<1||y2>m)continue;
						if(x1==x2&&y1==y2)continue;
						f[stage][x1][x2]=map[x1][y1]+map[x2][y2]+max(f[stage-1][p1][q1],f[stage-1][p2][q2]);
					}
			}
	cout<<f[n+m-1][n-1][m]<<endl;
	return 0;
}

四维过了,三维连样例都错

2020/5/5 10:05
加载中...