• G:jlz的漫步(1316)


    题目链接:http://acm.xidian.edu.cn/problem.php?id=1316

      dfs + 记忆化搜索,因为dfs的回溯,很方便的可以在每一点做记忆;

      dfs定义变量一定要注意全局和局部;

     1 #include<stdio.h>
     2 #include<memory.h>
     3 #include<algorithm>
     4 
     5 using namespace std;
     6 int A[1005][1005];
     7 int d[1001][1001];
     8 int n, m; 
     9 int max_len;
    10 int dx[4] = {-1, 0, 1, 0};
    11 int dy[4] = {0, -1, 0, 1};
    12 
    13 int dfs(int x, int y)
    14 {
    15     if(d[x][y] != 0)                //判断是否有子树已经被经历过 
    16         return d[x][y];
    17     int len = 1;                     //**********dfs中的量,尽可能都在dfs中定义,因为该量会随dfs递归和回溯,定义为全局变量会出事(1h血的教训!!!) 
    18     for(int k = 0;k < 4;k++)
    19     {
    20         int di = x + dx[k];
    21         int dj = y + dy[k];
    22         if(di >= 0 && di < n && dj >= 0 && dj < m && A[di][dj] > A[x][y])
    23         {
    24             len = max(len, dfs(di,dj) + 1);
    25         }
    26     }
    27      d[x][y] = len;                        //通过回溯来实现倒着记录层数(语言匮乏,你可以试着用bfs想一下,发现bfs很难做到) 
    28      return len; 
    29 }
    30 
    31 int main()
    32 {
    33     int T;
    34     while(scanf("%d",&T) != EOF)
    35     {
    36         while(T--)
    37         {
    38             memset(d,0,sizeof(d));
    39             max_len = -1;
    40             scanf("%d %d",&n, &m);            
    41             for(int i = 0;i < n;i++)
    42                 for(int j = 0;j < m;j++)
    43                     scanf("%d",&A[i][j]);
    44             for(int i = 0;i < n;i++)
    45                 for(int j = 0;j < m;j++)
    46                 {
    47                      max_len = max(max_len,dfs(i,j));        //在各个点执行dfs,找出最长路径 
    48                 }
    49             printf("%d
    ",max_len);
    50         }
    51     }
    52     return 0;
    53 } 
  • 相关阅读:
    js 创建对象
    js的面向对象
    js的JSON
    js 标准对象
    js generator
    js 闭包
    js sort
    js filter关键字
    [转载] 自定义标签,jsp调用java类
    JSTL标签常用
  • 原文地址:https://www.cnblogs.com/Dicer/p/9114552.html
Copyright © 2020-2023  润新知