#include <cstring> using namespace std; const int kMaxN = 101; int kDp[kMaxN][kMaxN]; int kArr[kMaxN][kMaxN]; int kN, kM; const int kDx[] = {1, -1, 0, 0}; const int kDy[] = {0, 0, 1, -1}; bool (int x, int y, int p_x, int p_y ){ if(x >= 0 && x < kN && y >= 0 && y <kM && kArr[p_x][p_y] > kArr[x][y]){ return true; } return false; } int Dfs(int x, int y){ if(kDp[x][y] != -1) return kDp[x][y]; for(int i = 0; i < 4; ++i){ int nx = x + kDx[i]; int ny = y + kDy[i]; if(Ok(nx, ny, x, y)){ kDp[x][y] = max(kDp[x][y], Dfs(nx, ny) + 1); } } return kDp[x][y] == -1 ? 0 : kDp[x][y]; } int main(){ while(cin>>kN>>kM){ for(int i = 0; i < kN; ++i){ for(int j = 0; j < kM; ++j){ cin>>kArr[i][j]; } } int res = 0; memset(kDp, -1, sizeof(kDp)); for(int i = 0; i < kN; ++i){ for(int j = 0; j < kM; ++j){ if(kDp[i][j] == -1) { kDp[i][j] = Dfs(i, j); } res = max(res, kDp[i][j]); } } cout<<res+1<<endl; } return 0; }
|
近期评论