1:  // problem : 方格取数
   2:  // data : 4.18
   3:  #include <iostream>
   4:  #include <cstring>
   5:  using namespace std;
   6:  int f[25][11][11],map[11][11];
   7:  int main()
   8:  {
   9:      int n,a,c,b;
  10:      memset(map,0,sizeof(map));
  11:      cin>>n;
  12:      while(cin>>a>>b>>c && a+b+c)
  13:      {
  14:          map[a][b] = c;
  15:      }
  16:      memset(f,0,sizeof(f));
  17:      f[1][1][1] = map[1][1]; // di yi jie duan jiu yi ge
  18:      for(int i=2;i<=2*n-1;i++) // jie duan
  19:      {
  20:          for(int j=1;j<=n;j++) // zhuang tai [x,y] -> x = j && y = i+1-j
  21:          {
  22:              for(int k=1;k<=n;k++) // zhuang tai
  23:              {
  24:                  if(i+1-j>0 && i+1-k>0)
  25:                  {
  26:                      f[i][j][k] = max(f[i-1][j-1][k],max(f[i-1][j-1][k-1],max(f[i-1][j][k-1],f[i-1][j][k]))); // si zhong jue ce neng dao da (j , k) zhe ge zhuang tai
  27:                      if(j == k)
  28:                      f[i][j][k] = f[i][j][k] + map[j][i+1-j];
  29:                      else
  30:                      f[i][j][k] = f[i][j][k] + map[j][i+1-j] + map[k][i+1-k];
  31:                  }
  32:              }
  33:          }
  34:      }
  35:      cout<<f[n*2-1][n][n]<<endl;
  36:      return 0;
  37:  }
  38:  /*
  39:      PS :  阶段-->状态-->决策
  40:  */
未命名
 posted on 2011-04-18 19:08  eth0  阅读(228)  评论(0编辑  收藏  举报