赞
踩
- // write your code here cpp
- /*
- 1、本题使用递归的核心在于处理边界问题
- 2、本文处理的时候 存储方式如下
- 65535 65535 65535 65535
- 65535 实体值 实体值 65535
- 65535 实体值 实体值 65535
- 65535 65535 65535 65535
- 四周的值都比较大使得其不可越界
- */
- #include<iostream>
- #include<vector>
- #include<algorithm>
- int dp[102][102];
- #define M 10086;
- using namespace std;
-
- int mm =0 ;
-
- void compute(int x, int y, int n)
- {
- int t;
- t=dp[x][y];
- if(t<=dp[x-1][y]&&t<=dp[x+1][y]&&t<=dp[x][y-1]&&t<=dp[x][y+1])
- {
- mm=mm>n? mm:n;
- return ;
- }
- if(t>dp[x-1][y])
- compute(x-1,y,n+1);
- if(t>dp[x+1][y])
- compute(x+1,y,n+1);
- if(t>dp[x][y-1])
- compute(x,y-1,n+1);
- if(t>dp[x][y+1])
- compute(x,y+1,n+1);
- return;
- }
-
- int main()
- {
- int m =0, n =0;
- while( cin >>m >> n)
- {
- for(int i =0; i<=101; i++)
- {
- for(int j =0; j <=101; j++)
- {
- dp[i][j] = 655350;
- }
- }
- for(int i = 1; i <= m; i++ )
- {
- for(int j = 1; j <=n; j++)
- {
- int t =0;
- cin >> t;
- dp[i][j] = t;
- }
-
-
- }
- for(int i = 1; i <= m; i++ )
- {
- for(int j = 1; j <=n; j++)
- {
- compute(i,j,1);
- }
- }
- cout << mm <<endl;
- }
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。