POJ 1088 递归+记忆化搜索
来源:互联网 发布:从底层看java中的接口 编辑:程序博客网 时间:2024/05/18 22:16
题目要求: 一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。求可以滑落的最长长度。
思路:记忆搜索水题
代码:
#include <iostream>#include <cstdio>#include <math.h>#include <cstring>using namespace std;const int maxn = 105;const int INF = 0x7fffffff;int a[maxn][maxn];int n, m, p, ans = 0;bool f = false;int xd[] = {1, -1, 0, 0};int yd[] = {0, 0, -1, 1};int dp[maxn][maxn] = {0};int dfs(int x, int y){ if (dp[x][y] != 0) { return dp[x][y]; } dp[x][y] = 1; for (int i = 0; i < 4; ++i) { int mx = xd[i] + x; int my = yd[i] + y; if (mx > 0 && my > 0 && mx <= n && my <= m && a[x][y] > a[mx][my]) { dp[x][y] = max(dp[x][y], dfs(mx, my) + 1); } } ans = max(dp[x][y], ans); return dp[x][y];}int solve(){ for(int i = 1; i <= n; ++i) { for (int j = 1; j <= m; ++j) { cin >> a[i][j]; } } memset(dp, 0, sizeof(dp)); for (int i = 1; i <= n; ++i) { for (int j = 1; j <= m; ++j) { dfs(i, j); } } cout << ans << endl; return 0;}int main(){ while (scanf("%d%d", &n, &m) != EOF) { solve(); } return 0;}
0 0
- POJ 1088 递归+记忆化搜索
- POJ 1088 递归+记忆化搜索
- POJ 1088 滑雪(递归+记忆化搜索)
- POJ 1088 滑雪 (递归+记忆化搜索)
- POJ-1088~~~~~滑雪(递归+记忆化搜索)
- 记忆化递归搜索(poj 1579)
- poj 1579 递归-记忆化搜索
- POJ-1088 记忆化搜索
- poj 1088(记忆化搜索)
- poj 1088 记忆化搜索
- poj 1088 记忆化搜索
- POJ 1088 记忆化搜索
- poj 1088 记忆化搜索
- 递归+记忆化搜索
- POJ-1579-Function Run Fun-递归,记忆化搜索
- poj 1191棋盘分割(递归dp, 记忆化搜索)
- POJ 1579-Function Run Fun(记忆化搜索-递归)
- 【记忆化搜索】POJ
- 树莓派系列三(max7219 led点阵)
- 深入理解C++对象模型-对象的内存布局,vptr,vtable
- 框架之Stucts2篇----day3.1
- chrome下,http请求重复问题
- 在Android的控件布局中,有一个奇葩的 layout_weight 属性
- POJ 1088 递归+记忆化搜索
- caffe训练GPU配置
- cookie是怎么被盗的
- 递归递推总结
- Number Sequence HDU
- 使用一个消息队列作为计数信号量
- 接口中的两次请求
- C++ 牛客网做题笔记【900题总结】
- [BZOJ2534]Uva10829L-gap字符串(后缀数组+st表)