zoukankan      html  css  js  c++  java
  • POJ 1088 滑雪

    滑雪
     
    Time Limit: 1000MS   Memory Limit: 65536K
    Total Submissions: 65004   Accepted: 23795

    题目链接: http://poj.org/problem?id=1088

    不理他是不是DP的问题了,最终还是用自己熟悉的DFS解决,但隐约地感觉还是有DP的味道,因为你确认从一个点能走多远的时候,你必须先知道四周的那个点能走多远

     1 #include<stdio.h>
     2 #include<string.h>
     3 #define MAXN 120
     4 int maze[MAXN][MAXN];
     5 int visit[MAXN][MAXN], value[MAXN][MAXN];
     6 
     7 int dir[4][2] = {{-1, 0}, {0, -1}, {0, 1}, {1, 0}};
     8 
     9 int Traverse(int r, int c, int x, int y)
    10 {
    11     int i, j, t, temp = 1, max = 0;
    12     visit[x][y] = -1;  // -1 表示此时的点还在遍历当中 
    13     for(t=0; t<4; ++t)
    14     {
    15         i = x+dir[t][0];
    16         j = y+dir[t][1];
    17         if(0<=i && i<r && 0<=j && j<c && maze[i][j] < maze[x][y])
    18         {//其实对于这种题印象最深刻的还是得到一个值是建立在得到其他值的基础之上的 
    19             if(visit[i][j] == 0) temp = Traverse(r, c, i, j);
    20             else if(visit[i][j] != -1) temp = value[i][j];
    21             max = temp > max ? temp : max;
    22         }
    23     }
    24     visit[x][y] = 1;
    25     value[x][y] = value[x][y] > max+1 ? value[x][y] : max+1;
    26     return value[x][y];
    27 }
    28 int main()
    29 {
    30 //    freopen("input.txt", "r", stdin);
    31     int c, r, temp, i, j;
    32     scanf("%d%d", &r, &c);
    33     for(i=0; i<r; ++i)
    34     for(j=0; j<c; ++j)
    35         scanf("%d", &maze[i][j]);
    36     memset(visit, 0, sizeof(visit));
    37     memset(value, 0, sizeof(value)); //value[i][j] 表示从这个点开始能滑多久 
    38     for(i=0; i<r; ++i)
    39     for(j=0; j<c; ++j)
    40     Traverse(r, c, i, j);
    41     temp = 0;
    42     for(i=0; i<r; ++i)
    43         for(j=0; j<c; ++j)
    44             temp = temp > value[i][j] ? temp : value[i][j];
    45     printf("%d\n", temp);
    46     return 0;
    47 }
    物役记

    更多内容请关注个人微信公众号 物役记 (微信号:materialchains)

  • 相关阅读:
    201671010113 201620172 《JAVA程序设计》第三周
    201671010113 201620172 《JAVA程序设计》浅入JAVA
    201671010113 201620172 《JAVA程序设计》第四周
    C++中的四种类型转换符
    《统计学习方法》 梯度下降的两种应用场景
    【转载】推荐系统算法总结
    剑指offer面试题1
    SQL清空数据技巧
    DataGridView绑定List时无法进行添加删除操作的解决方法
    MyEclipse新建web project和navicat110_mysql_en工具
  • 原文地址:https://www.cnblogs.com/liaoguifa/p/3029223.html
Copyright © 2011-2022 走看看