poj 1088

include <iostream>

include <cstdio>

include <cstring>

using namespace std;

define MAX_N 110

int r, c;
int map[MAX_N][MAX_N];
int dx[4] = {1, 0, -1, 0}, dy[4]= {0, 1, 0, -1};
int len[MAX_N][MAX_N];

int dp(int a, int b) {
int x, y, s;
int ms = 0;
if (len[a][b] != 0) return len[a][b];

for (int i = 0; i < 4; i++) {
    x = a + dx[i];
    y = b + dy[i];
    if (x < 0 || y < 0 || x > r - 1 || y > c - 1) continue;
    if(map[x][y] < map[a][b]) {
        s = dp(x, y);
        ms = max(ms, s);
    }
}
len[a][b] = ms + 1;
return len[a][b];

}

int main() {
cin >> r >> c;
for (int i = 0; i < r; i++) {
for (int j = 0; j < c; j++) {
cin >> map[i][j];
}
}
memset(len,0,sizeof(len));
int Max = -1;
for (int i = 0; i < r; i++) {
for (int j = 0; j < c; j++) {
Max=max(Max,dp(i,j));
}
}
cout << Max << endl;
return 0;
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容