80046 - 雪地探险(46~50题)
统计题目(材料题)
在一片矩形雪地中,每个格子有一个海拔高度。滑雪爱好者可以从任意格子出发,每次只能移动到上下左右相邻且海拔严格低于当前格子的海拔高度(只能下坡,不能上坡或平坡),且不能重复经过同一个格子。在整个雪地上,最多能经过多少个格子(包含起点)?
01 #include <iostream>
02 #include <algorithm>
03 using namespace std;
04
05 const int M = 55;
06 int a[M][M];
07 int path[M][M];
08 int n, m;
09 int dx[4] = {0, 0, 1, -1};
10 int dy[4] = {1, -1, 0, 0};
11
12 int dfs(int x, int y) {
13 ①
14 return path[x][y];
15 ②
16 for (int i = 0; i < 4; i++) {
17 int nx = x + dx[i];
18 int ny = y + dy[i];
19 if ( ③ ){
20 ans = ④
21 }
22 }
23 return path[x][y] = ans;
24 }
25
26 int main() {
27 cin >> n >> m;
28 for (int i = 0; i < n; i++)
29 for (int j = 0; j < m; j++)
30 cin >> a[i][j];
31 for (int i = 0; i < n; i++)
32 for (int j = 0; j < m; j++)
33 path[i][j] = -1;
34 int max_len = 0;
35 for (int i = 0; i < n; i++)
36 for (int j = 0; j < m; j++)
37 max_len = ⑤
38 cout << max_len << endl;
39 return 0;
40 }

关注我们