import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;
public class Poj_2088 {
static StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
static PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
static int[][] fd = {{1, 0}, {0, 1}, {-1, 0}, {0, -1}};
static int[][] map = new int[105][105];
static int[][] len = new int[105][105];
static int N, M;
public static int nextInt() throws IOException {
in.nextToken();
return (int) in.nval;
}
public static String next() throws IOException {
in.nextToken();
return (String) in.sval;
}
public static void main(String[] args) throws IOException {
N = nextInt();
M = nextInt();
int max = -1;
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= M; j++) {
map[i][j] = nextInt();
}
}
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= M; j++) {
len[i][j] = dfs(i, j);
if (len[i][j] > max) {
max = len[i][j];
}
}
}
out.println(max);
out.flush();
}
public static int dfs(int x, int y) {
if (len[x][y] != 0) {
return len[x][y];
}
int maxlen = 0, s;
for (int i = 0; i < 4; i++) {
int xx = x + fd[i][0];
int yy = y + fd[i][1];
if (isMap(xx, yy) && map[xx][yy] < map[x][y]) { // 比隔壁的低、、、
s = dfs(xx, yy);
if(s > maxlen){
maxlen = s;
}
}
}
len[x][y] = maxlen + 1;
return maxlen + 1;
}
public static boolean isMap(int x, int y) {
if (1 <= x && x <= N && 1 <= y && y <= M) {
return true;
}
return false;
}
}
Poj_1088
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.