Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
193903 | luckypet | 滑雪 | C++ | 通过 | 100 | 0 MS | 348 KB | 1119 | 2025-05-27 14:48:08 |
#include <iostream> #include <vector> #include <algorithm> using namespace std; const int MAX_R = 105; const int MAX_C = 105; int R, C; vector<vector<int>> height(MAX_R, vector<int>(MAX_C)); vector<vector<int>> dp(MAX_R, vector<int>(MAX_C, 0)); int dirs[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}}; int dfs(int i, int j) { if (dp[i][j] != 0) return dp[i][j]; int max_len = 1; for (auto& dir : dirs) { int ni = i + dir[0]; int nj = j + dir[1]; if (ni >= 0 && ni < R && nj >= 0 && nj < C && height[ni][nj] < height[i][j]) { max_len = max(max_len, 1 + dfs(ni, nj)); } } dp[i][j] = max_len; return max_len; } int main() { cin >> R >> C; for (int i = 0; i < R; ++i) { for (int j = 0; j < C; ++j) { cin >> height[i][j]; } } int max_path = 0; for (int i = 0; i < R; ++i) { for (int j = 0; j < C; ++j) { max_path = max(max_path, dfs(i, j)); } } cout << max_path << endl; return 0; }