• 洛谷[P1004]方格取数


    题目描述

    设有N*N的方格图(N<=9),我们将其中的某些方格中填入正整数,而其他的方格中则放

    人数字0。如下图所示(见样例):

    A
     0  0  0  0  0  0  0  0
     0  0 13  0  0  6  0  0
     0  0  0  0  7  0  0  0
     0  0  0 14  0  0  0  0
     0 21  0  0  0  4  0  0
     0  0 15  0  0  0  0  0
     0 14  0  0  0  0  0  0
     0  0  0  0  0  0  0  0
    .                       B

    某人从图的左上角的A点出发,可以向下行走,也可以向右走,直到到达右下角的B

    点。在走过的路上,他可以取走方格中的数(取走后的方格中将变为数字0)。

    此人从A点到B点共走两次,试找出2条这样的路径,使得取得的数之和为最大。

    输入输出格式

    输入格式:

    输入的第一行为一个整数N(表示N*N的方格图),接下来的每行有三个整数,前两个

    表示位置,第三个数为该位置上所放的数。一行单独的0表示输入结束。

    输出格式:

    只需输出一个整数,表示2条路径上取得的最大的和。

    输入输出样例

    输入样例#1:
    8
    2 3 13
    2 6  6
    3 5  7
    4 4 14
    5 2 21
    5 6  4
    6 3 15
    7 2 14
    0 0  0
    
    输出样例#1:
    67

    说明

    NOIP 2000 提高组第四题

    用四维数组f[i][j][u][v]

      i,j 表示一个人

      u,v表示另一个人

     1 #include <iostream>
     2 #include <cstring>
     3 
     4 using namespace std;
     5 
     6 int m[15][15],f[15][15][15][15];
     7 int main()
     8 {
     9     int n,x,y,z;
    10     cin>>n;
    11     while(cin>>x>>y>>z,x||y||x)
    12         m[x][y]=z;
    13     memset(f,0,sizeof(f));
    14 
    15     for(int i=1;i<=n;i++)
    16         for(int j=1;j<=n;j++)
    17             for(int u=1;u<=n;u++)
    18                 for(int v=1;v<=n;v++)
    19                 {
    20                     f[i][j][u][v]=max(max(f[i-1][j][u-1][v],f[i][j-1][u][v-1]),max(f[i][j-1][u-1][v],f[i-1][j][u][v-1]))+m[i][j];
    21                     /*
    22                         A   B
    23                         上  上
    24                         右  右
    25                         右  上
    26                         上  右
    27                         如果AB在同一个位置只算一次
    28                     */
    29                     if(i!=u&&j!=v)
    30                         f[i][j][u][v]+=m[u][v];
    31                 }
    32     cout<<f[n][n][n][n]<<endl;
    33     return 0;
    34 }
  • 相关阅读:
    javascript中!=、!==、==、===操作符总结
    轮询、长轮询与Web Socket的前端实现
    C#中Enum用法小结
    浅谈Javascript 中几种克隆(clone)方式
    JS数组sort比较函数
    为Jquery类和Jquery对象扩展方法
    自定义滚动条mCustomScrollbar
    T-SQL 控制流语句
    sql case 用法总结
    Selenium2+python自动化19-单选框和复选框(radiobox、checkbox)【转载】
  • 原文地址:https://www.cnblogs.com/asuml/p/6837877.html
Copyright © 2020-2023  润新知