比赛 防止颓废的小练习v0.4 评测结果 AAAAAA
题目名称 方格取数 最终得分 100
用户昵称 dududu 运行时间 0.009 s
代码语言 C++ 内存使用 0.39 MiB
提交时间 2016-10-25 10:35:19
显示代码纯文本
#include<iostream>
#include<cstdio>
using namespace std;

#define KN 12
int N;
int map[KN][KN];
int f[KN][KN][KN][KN];//f[i][j][m][n]

void init(){
	scanf("%d",&N);
	int i,j,k; 
	while(1){
		scanf("%d%d%d",&i,&j,&k);
		if(i==0&&j==0&&k==0) break;
		map[i][j]=k;
	} 
}

void sol(){
	
	for(int i=1;i<=N;i++)
		for(int j=1;j<=N;j++)
			for(int m=1;m<=N;m++)
				for(int n=1;n<=N;n++){
					f[i][j][m][n]=max(f[i][j][m][n],f[i-1][j][m-1][n]);
					f[i][j][m][n]=max(f[i][j][m][n],f[i-1][j][m][n-1]);
					f[i][j][m][n]=max(f[i][j][m][n],f[i][j-1][m-1][n]);
					f[i][j][m][n]=max(f[i][j][m][n],f[i][j-1][m][n-1]);
					f[i][j][m][n]+=map[i][j];
					if(i!=m||j!=n) f[i][j][m][n]+=map[m][n];
				}			
	
	printf("%d",f[N][N][N][N]);
}

int main(){
	
	freopen("fgqs.in","r",stdin);
	freopen("fgqs.out","w",stdout);
	init();
	sol();
	return 0;
}