POJ 1008 深度优先、记忆搜索

来源:互联网 发布:mac词典 编辑:程序博客网 时间:2024/05/21 09:34

http://blog.sina.com.cn/s/blog_7025794a01014pps.html


#include <iostream> #include <string>  using namespace std;  const int MAXN = 100;  int r, c; int h[MAXN+1][MAXN+1]; int f[MAXN+1][MAXN+1];  bool Valid(int x, int y) {     return x >= 1 && x <= r && y >= 1 && y <= c; }  int F(int i, int j) {     if (f[i][j] != 0)     {       return f[i][j];     }     int d;     const int dir[][2] = {{0, ‐1}, {‐1, 0}, {0, 1}, {1, 0}};     for (d = 0; d < 4; d ++)     {         int x = i + dir[d][0], y = j + dir[d][1];         if (Valid(x, y) && h[x][y] < h[i][j] && F(x, y) > f[i][j])         {             f[i][j] = F(x, y);         }     }     return ++f[i][j]; }  int main() {     int i, j;     cin >> r >> c;     for (i = 1; i <= r; i ++)     {         for (j = 1; j <= c; j ++)         {             cin >> h[i][j];         }     }     int ans = 0;     for (i = 1; i <= r; i ++)     {         for (j = 1; j <= c; j ++)         {             if (F(i, j) > ans)             {                 ans = F(i, j);             }         }     }     cout << ans << endl;     return 0; }  



原创粉丝点击