社区讨论

72分,有没有大佬救救

P1004[NOIP 2000 提高组] 方格取数参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mkl8stwv
此快照首次捕获于
2026/01/19 22:10
2 个月前
此快照最后确认于
2026/01/19 22:12
2 个月前
查看原帖
CPP
#include <cstdio>
using namespace std;

const int maxn=40;
int a[maxn][maxn],f[maxn][maxn][maxn][maxn];
int max(int x,int y);

int main()
{
    int n,x,y,m;
    scanf("%d",&n);
	while(scanf("%d%d%d",&x,&y,&m)){
        if(x==0 && y==0 && m==0) break;
        else a[x][y]=m;
    }
	
    for(int i=1;i<=n;i++)
    	for(int j=1;j<=n;j++)
        	for(int k=1;k<=n;k++)
            	for(int l=i;l<=n;l++){
                	int temp1=max(f[i-1][j][k-1][l],f[i-1][j][k][l-1]);
                    int temp2=max(f[i][j-1][k-1][l],f[i][j-1][k][l-1]);
                    
                    f[i][j][k][l]=max(temp1,temp2)+a[i][j]+a[k][l];
                    if(i==k && j==l){
                    	f[i][j][k][l]-=a[i][j];
                    }
                }
                
    printf("%d",f[n][n][n][n]);            
                
    return 0;
}
int max(int x,int y)
{
	return x>y? x:y;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...