#include<iostream>
#include<vector>
using namespace std;
vector<vector<int>> matrix;
vector<vector<int>> visited;
int m;
int n;
int result = 0;
vector<int> directions = {-1, 0, 1, 0, -1};
void dfs(int x, int y, int step_count, bool flag) {
if(step_count>result){
result = step_count;
}
visited[x][y] = 1;
int i=1;
while(true){
if(i>=5){
break;
} else {
int xx = x + directions[i- 1];
int yy = y + directions[i];
if (xx < 0 || yy < 0 || xx >= m || yy >= n || visited[xx][yy] == 1
|| matrix[xx][yy] == matrix[x][y] || ((flag && matrix[xx][yy] > matrix[x][y]) || (!flag && matrix[xx][yy] < matrix[x][y]))) {
i+=1;
continue;
}
dfs(xx, yy, step_count + 1, !flag);
}
i+=1;
}
visited[x][y] = 0;
}
int main()
{
cin >> m >> n;
matrix.resize(m);
visited.resize(m);
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
int a;
cin >> a;
matrix[i].push_back(a);
visited[i].push_back(0);
}
}
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
dfs(i,j, 0, true);
dfs(i,j, 0, false);
}
}
cout<<result<<endl;
return 0;
}
编程练习8 中庸行者
最新推荐文章于 2025-08-13 16:21:27 发布