讨论 / 滑雪DFS高速代码C++
ZnyY 2016-02-14 16:53:41
点我顶贴 收藏 删除
#include<iostream>

#include<cstring>

#include<algorithm>

using namespace std ;

int MAX ;

int sum , m = 1 ;

int R , C ;//区域的行数R和列数C

int map[4000][4000] ;

int opt[4000][4000] ;

int Move[4][2] = { {0 , 1} ,

{1 , 0} ,

{0 , -1} ,

{-1 , 0} } ;

void dfs( int x , int y ){

if (opt[x][y] > 0) return;

opt[x][y] = 1 ;

for ( int k = 0 ; k <= 3 ; k++ )

{

int tx = x + Move[k][0] ;

int ty = y + Move[k][1] ;

if ( map[x][y] > map[tx][ty] && tx > 0 && tx <= R && ty > 0 && ty <= C ){

dfs(tx , ty) ;

opt[x][y] = max ( opt[x][y] , opt[tx][ty] + 1 ) ;

}

}

}

int main(){

int i , j ;

cin >> R >> C ;

for ( i = 1 ;i <= R ; i++ )

for ( j = 1 ; j <= C ; j++ )

cin >> map[i][j] ;

for ( i = 1 ;i <= R ; i++ )

for ( j = 1 ; j <= C ; j++ ){

dfs(i , j) ;

MAX = max ( MAX , opt[i][j] ) ;

}

cout << MAX ;

return 0 ;

}

查看更多回复
提交回复