碎碎念
开始复习记忆化搜索,本道题一上来就有思路,可调试一直很不顺利,花了2.5个小时,终于还是把他摆平了。
明天开始备战,要调整节奏,加油!
别再犯低级错误,别再犯低级错误,别再犯低级错误,重要的事多了3遍,我记得住的。
今天老码农给我放了假,10点前就可以去看我的综艺了。
题目
题目原文请移步下面的链接
- https://www.luogu.com.cn/problem/P1434
- 参考题解:https://www.luogu.com.cn/problem/solution/P1434
- 标签:
搜索
、记忆化搜索
题解
- 题解大家可移步看这里,很多童鞋写了各种解法
- https://www.luogu.com.cn/problem/solution/P1434
代码
代码语言:javascript复制#include <bits/stdc .h>
using namespace std;
#define endl 'n';
int g[101][101];
int ms[101][101];
int dfs(int a, int b, int r, int c) {
if (ms[a][b] != 0) {
return ms[a][b];
}
if (a - 1 >= 0 && g[a - 1][b] < g[a][b]) {
ms[a][b] = max(ms[a][b], dfs(a - 1, b, r, c) 1);
}
if (b - 1 >= 0 && g[a][b - 1] < g[a][b]) {
ms[a][b] = max(ms[a][b], dfs(a, b - 1, r, c) 1);
}
if (a 1 < r && g[a 1][b] < g[a][b]) {
ms[a][b] = max(ms[a][b], dfs(a 1, b, r, c) 1);
}
if (b 1 < c && g[a][b 1] < g[a][b]) {
ms[a][b] = max(ms[a][b], dfs(a, b 1, r, c) 1);
}
ms[a][b] ? ms[a][b] : ms[a][b] = 1;
return ms[a][b];
}
void best_coder() {
int r, c;
scanf("%d%d", &r, &c);
for (int i = 0; i < r; i) {
for (int j = 0; j < c; j) {
scanf("%d", &g[i][j]);
}
}
int ans = 0;
ms[0][0] = 1;
for (int i = 0; i < r; i) {
for (int j = 0; j < c; j) {
ans = max(ans, dfs(i, j, r, c));
}
}
printf("%d", ans);
}
void happy_coder() {
}
int main() {
// 提升cin、cout效率
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
// 小码匠
best_coder();
// 最优解
// happy_coder();
// 返回
return 0;
}
END