记录编号 |
434650 |
评测结果 |
AAAAAA |
题目名称 |
[NOIP 2000]方格取数 |
最终得分 |
100 |
用户昵称 |
123 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.001 s |
提交时间 |
2017-08-08 16:15:40 |
内存使用 |
0.39 MiB |
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <stdio.h>
using namespace std;
int dp[12][12][12][12]={0},f[12][12]={0},n,m;
int main(){
freopen ("fgqs.in","r",stdin);
freopen ("fgqs.out","w",stdout);
int a,b,c,d;
int i,j,k,l;
cin>>n;
for(a=1;;a++)
{
cin>>b>>c>>d;
if(b==0&&c==0&&d==0)
break;
else
f[b][c]=d;
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
for(k=1;k<=n;k++)
{
for(l=1;l<=n;l++)
{
m=0;
m=max(m,dp[i-1][j][k-1][l]);
m=max(m,dp[i-1][j][k][l-1]);
m=max(m,dp[i][j-1][k-1][l]);
m=max(m,dp[i][j-1][k][l-1]);
dp[i][j][k][l]=m+f[i][j]+f[k][l];
if(i==k&&j==l)
dp[i][j][k][l]-=f[i][j];
}
}
}
}
cout<<dp[n][n][n][n];
return 0;
}