博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 1088: 滑雪
阅读量:6183 次
发布时间:2019-06-21

本文共 2024 字,大约阅读时间需要 6 分钟。

hot3.png

解题思路:设一与输入数组对应的状态数组 dp,其值代表输入数组中此点的最长滑雪路径。使用广搜填表,最后遍历输出最大值即可。

#include 
#include
// 输入数组、解空间const int MAX = 100;int map[MAX][MAX];int dp[MAX][MAX];int r, c;int BFS(int i, int j) { int max = -1; // 如当前坐标右侧有路,则广搜填值 if (j + 1 < c && map[i][j] > map[i][j + 1]) { if (dp[i][j + 1]) { max = max > dp[i][j + 1] ? max : dp[i][j + 1]; } else { max = max > BFS(i, j + 1) ? max : BFS(i, j + 1); } } // 向下广搜 if (i + 1 < r && map[i][j] > map[i + 1][j]) { if (dp[i + 1][j]) { max = max > dp[i + 1][j] ? max : dp[i + 1][j]; } else { max = max > BFS(i + 1, j) ? max : BFS(i + 1, j); } } // 向左广搜 if (j - 1 >= 0 && map[i][j] > map[i][j - 1]) { if (dp[i][j - 1]) { max = max > dp[i][j - 1] ? max : dp[i][j - 1]; } else { max = max > BFS(i, j - 1) ? max : BFS(i, j - 1); } } // 向上广搜 if (i - 1 >= 0 && map[i][j] > map[i - 1][j]) { if (dp[i - 1][j]) { max = max > dp[i - 1][j] ? max : dp[i - 1][j]; } else { max = max > BFS(i - 1, j) ? max : BFS(i - 1, j); } } // 如上下左右均不通,该点路径值为 1; // 否则取最大路径值加 1 if (max == -1) { dp[i][j] = 1; } else { dp[i][j] = 1 + max; } return dp[i][j];}int solve() { // 遍历所有坐标,不留死角 int ans = 0; for (int i = 0; i < r; ++i) { for (int j = 0; j < c; ++j) { // 如尚未寻访此点,从此点向四面广搜 if (!dp[i][j]) { BFS(i, j); } // 同时记录最长路径 if (dp[i][j] > ans) { ans = dp[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", &map[i][j]); } } // 初始化解空间 memset(dp, 0, sizeof(dp)); printf("%d\n", solve()); } return 0;}

转载于:https://my.oschina.net/Alexanderzhou/blog/203111

你可能感兴趣的文章
4.3 Hibernate关系映射
查看>>
IO复用\阻塞IO\非阻塞IO\同步IO\异步IO
查看>>
Canopy聚类算法
查看>>
高并发的大型网站架构设计
查看>>
Implement Magic Dictionary
查看>>
Java提高篇(三一)—–Stack
查看>>
关于java web项目使用log4j
查看>>
AndroidPN系列之三--服务端Bug汇总
查看>>
【转载】关于时间、时区、系统时间和硬件时间
查看>>
Java Class.forName、Class.class、getClass示例区分
查看>>
为什么会"well-known file is not secure" ?
查看>>
ThinkPHP隐藏index.php的方法汇总【IIS/Apache/Nginx】
查看>>
<转>进程与线程的一个简单解释
查看>>
typescript 学习教程 (1)
查看>>
Hadoop 解除 "Name node is in safe mode"
查看>>
正则表达式
查看>>
字符串处理的练习~
查看>>
一名网工对Linux运维的一次经历
查看>>
jdbc中如何使用classloader
查看>>
在Struts2中方便获得Spring中的Bean方法
查看>>