| 
		
			| 
	
	
		
			
http://acm.pku.edu.cn/JudgeOnline/problem?id=1088 //为这题……整个人烦到极顶…… 
  #include<iostream> 
  using namespace std; 
  int map[101][101]; 
  int dp[101][101];//dp[i][j]表示从i j 出发能够到达的最大长度 
  int m,n; 
   int dir[4][2]=  {  {-1,0},  {1,0},  {0,-1},  {0,1}}; 
  int dfs(int si,int sj) 
    { 
  int k,vi,vj,mt,temp; 
  if(dp[si][sj] > 0) 
  return dp[si][sj]; 
  mt=0; 
  for(k=0;k<4;k++) 
     { 
  vi=si+dir[k][0]; 
  vj=sj+dir[k][1]; 
  if(vi>=1 && vi<=m && vj>=1 && vj<=n ) 
     { 
  if(map[vi][vj] > map[si][sj] ) 
     { 
  temp = dfs(vi,vj); 
  if(temp > mt) 
  mt = temp; 
  } 
  } 
  }//for(k=0;k<4;k++) 
  dp[si][sj] = mt+1; 
  return mt+1; 
  } 
  
  int main() 
    { 
  while(cin>>m>>n) 
     { 
  int i,j; 
  for(i=1;i<=m;i++) 
  for(j=1;j<=n;j++) 
     { 
  scanf("%d",&map[i][j]); 
  dp[i][j] = 0; 
  } 
  for(i=1;i<=m;i++) 
  for(j=1;j<=n;j++) 
  dfs(i,j); 
  int M=0; 
  for(i=1;i<=m;i++) 
  for(j=1;j<=n;j++) 
  if(dp[i][j] > M) 
  M = dp[i][j]; 
  cout<<M<<endl; 
  } 
  return 0; 
  }     
	    
    
 |  |  | 
		
			|  公告
  导航 统计
		随笔: 84
		文章: 7
		评论: 49
		引用: 0
	 常用链接留言簿(6)随笔分类随笔档案文章分类文章档案相册百事百通搜索积分与排名最新评论
	阅读排行榜评论排行榜
 |  |