POJ 1088 滑雪 记忆化优化题解
来源:互联网 发布:mac 破解软件大全 编辑:程序博客网 时间:2024/06/05 14:39
本题有人写是DP,不过和DP还是有点差别的,应该主要是记忆化 Momoization 算法。
思路就是递归,然后在递归的过程把计算的结果记录起来,以便后面使用。
很经典的搜索题目,这种方法很多题目考到的。
关键还是如何把代码写清晰工整了,O(∩_∩)O~。
#include <stdio.h>const int MAX_N = 101;int R, C;int arr[MAX_N][MAX_N];int tbl[MAX_N][MAX_N];inline int max(int a, int b) { return a > b ? a : b ; }inline bool isLegal(int r, int c, int r1, int c1){return 0<=r1 && 0<=c1 && r1<R && c1<C && arr[r][c] < arr[r1][c1];}int getMaxStair(int r, int c){if (tbl[r][c]) return tbl[r][c];int up = isLegal(r, c, r+1, c)? getMaxStair(r+1, c) : 0;int down = isLegal(r, c, r-1, c)? getMaxStair(r-1, c) : 0;int left = isLegal(r, c, r, c-1)? getMaxStair(r, c-1) : 0;int right = isLegal(r, c, r, c+1)? getMaxStair(r, c+1) : 0;return tbl[r][c] = max(max(up, down), max(left, right)) + 1;}int getMaxStairNum(){int ans = 0;for (int i = 0; i < R; i++){for (int j = 0; j < C; j++){getMaxStair(i, j);}}for (int i = 0; i < R; i++){for (int j = 0; j < C; j++){ans = max(ans, tbl[i][j]);}}return ans;}int main(){while (scanf("%d %d", &R, &C) != EOF){for (int i = 0; i < R; i++){for (int j = 0; j < C; j++){scanf("%d", &arr[i][j]);tbl[i][j] = 0;}}printf("%d\n", getMaxStairNum());}return 0;}
1 0
- POJ 1088 滑雪 记忆化优化题解
- POJ 1088滑雪 (记忆化DP)题解
- POJ 1088 滑雪 记忆化搜索
- poj 1088 滑雪[zz] 记忆化搜索
- poj 1088 滑雪 记忆化搜索
- POJ 1088 滑雪(DP+记忆化搜索)
- poj 1088 滑雪 ( 记忆化搜索 )
- poj 1088 滑雪(记忆化搜索/LIS)
- poj 1088 滑雪 记忆化搜索
- poj-1088-滑雪(记忆化搜索)
- POJ 1088 滑雪(记忆化搜索)
- poj 1088滑雪 记忆化搜索
- POJ 1088 滑雪 (记忆化搜索)
- POJ 1088 滑雪 DFS 记忆化搜索
- POJ 1088滑雪(记忆化搜索)
- poj 1088 滑雪_记忆化搜索
- POJ 1088 滑雪【记忆化搜索】
- poj 1088 滑雪(记忆化搜索)
- 概念:二元查找树
- mac 下终端访问文件出现“Permission Denied”解决方案
- MKMapView地理编码(即根据地址来转换成坐标)
- poj2528--Mayor's posters(线段树+离散化)
- zoj2297Survival (状态压缩DP)
- POJ 1088 滑雪 记忆化优化题解
- 如何在meidastreamer中添加h264编码器
- 【练手小程序——01】迷宫问题
- 大话设计模式1 简单工厂模式 的java代码实现
- hdu3342-Legal or Not 通过拓扑判断是不是有向环
- poj 2115 (数论之扩展欧几里得算法)
- db2codepage=1386
- 关于python文件操作
- oracle产品