zoukankan      html  css  js  c++  java
  • POJ 1088

    思路:记忆化搜索 + DP


    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #define MAX 105
    using namespace std;
    const int dir[4][2] = {-1, 0, 1, 0, 0, -1, 0, 1};
    int map[MAX][MAX], vis[MAX][MAX], h[MAX][MAX];
    void dfs(int x, int y){
        for(int i = 0;i < 4;i ++){
            int xx = x + dir[i][0];
            int yy = y + dir[i][1];
            if(map[xx][yy] != -1 && map[x][y] > map[xx][yy]){
                if(!vis[xx][yy]){
                    dfs(xx, yy);
                    h[x][y] = max(h[x][y], h[xx][yy] + 1);
                    vis[x][y] = 1;
                }else{
                    h[x][y] = max(h[xx][yy] + 1, h[x][y]);
                    continue;
                }
            }
        }
    }
    int main(){
        int R, C, ans;
        freopen("in.c", "r", stdin);
        while(cin >> R >> C){
            memset(map, -1, sizeof(map));
            memset(vis, 0, sizeof(vis));
            for(int i = 1; i<= R;i ++){
                for(int j = 0;j <= C;j ++)
                    h[i][j] = 1;
            }
            ans = -1;
            for(int i = 1;i <= R;i ++)
                for(int j = 1;j <= C;j ++)
                    cin >> map[i][j];
            for(int i = 1;i <= R;i ++){
                for(int j = 1;j <= C;j ++){
                    if(!vis[i][j])
                        dfs(i, j);
                }
            }
            for(int i = 1;i <= R;i ++){
                for(int j = 1;j <= C;j ++)
                    ans = max(h[i][j], ans);
            }
            cout << ans << endl;
        }
        return 0;
    }


  • 相关阅读:
    vue中height设置为100%却无法铺满整个页面
    cpp快速上手
    CSP_2020061_线性分类器
    cpp快速上手
    算法笔记
    cpp中set的使用
    cpp中vector的使用
    常用命令
    常用git命令
    Linux使用docker安装fastfs
  • 原文地址:https://www.cnblogs.com/anhuizhiye/p/3933217.html
Copyright © 2011-2022 走看看