求助
查看原帖
求助
1099365
yunren2012楼主2024/12/3 21:50
#include<bits/stdc++.h>
using namespace std;
long long n,m,aa,bb,cc,a[1005][1005],dp[1005][1005],up[1005],down[1005];
int main(){
	cin>>n;
	while(cin>>aa>>bb>>cc)
	{
		if(aa==0 && bb==0 && cc==0)
			break;
		a[aa][bb]=cc;
	}
	for(int i=1; i<=n; i++)
		dp[i][1]=dp[i-1][1]+a[i][1];
	for(int j=2; j<=n; j++)
	{
		up[1]=dp[1][j-1]+a[1][j];
		for(int i=2; i<=n; i++)
			up[i]=max(up[i-1]+a[i][j],dp[i][j-1]+a[i][j]);
		down[n]=dp[n][j-1]+a[n][j];
		for(int i=n-1; i>=1; i--)
			down[i]=max(down[i+1]+a[i][j],dp[i][j-1]+a[i][j]);
		for(int i=1; i<=n; i++)
			dp[i][j]=max(up[i],down[i]);
	}
	cout<<dp[n][m];
    return 0;
}
2024/12/3 21:50
加载中...