poj 1088 记忆化搜索
2016-07-16 16:55
435 查看
滑雪
Description
Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子
一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。在上面的例子中,一条可滑行的滑坡为24-17-16-1。当然25-24-23-...-3-2-1更长。事实上,这是最长的一条。
Input
输入的第一行表示区域的行数R和列数C(1 <= R,C <= 100)。下面是R行,每行有C个整数,代表高度h,0<=h<=10000。
Output
输出最长区域的长度。
Sample Input
Sample Output
Source
SHTSC 2002
题意:寻找一条最长的 权值连续下降 的路径 输出max
题解:记忆化搜索 是在搜索的基础上 借助动态规划的思想,减少搜索的重复;
dp[i][j] 存储 从(i,j)出发的最大值
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 90368 | Accepted: 34028 |
Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子
1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9
一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。在上面的例子中,一条可滑行的滑坡为24-17-16-1。当然25-24-23-...-3-2-1更长。事实上,这是最长的一条。
Input
输入的第一行表示区域的行数R和列数C(1 <= R,C <= 100)。下面是R行,每行有C个整数,代表高度h,0<=h<=10000。
Output
输出最长区域的长度。
Sample Input
5 5 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9
Sample Output
25
Source
SHTSC 2002
题意:寻找一条最长的 权值连续下降 的路径 输出max
题解:记忆化搜索 是在搜索的基础上 借助动态规划的思想,减少搜索的重复;
dp[i][j] 存储 从(i,j)出发的最大值
#include<iostream> #include<cstring> #include<algorithm> #include<cstdio> #include<queue> #define ll long long #define mod 1e9+7 #define PI acos(-1.0) #define bug(x) printf("%%%%%%%%%%%%%",x); #define inf 1e8 using namespace std; int r,c; int mp[105][105]; int dp[105][105]; int dis[4][3]={{1,0},{0,1},{0,-1},{-1,0}}; int ans=0; int dfs(int x,int y) { if(dp[x][y]) return dp[x][y]; int zha=0; for(int i=0;i<=3;i++) { int xx=x+dis[i][0]; int yy=y+dis[i][1]; if(xx>0&&xx<=r&&yy>0&&yy<=c) { if(mp[x][y]>mp[xx][yy]) zha=max(zha,dfs(xx,yy)); } } dp[x][y]=zha+1; return dp[x][y]; } int main() { while(scanf("%d %d",&r,&c)!=EOF) { ans=0; memset(mp,0,sizeof(mp)); memset(dp,0,sizeof(dp)); for(int i=1;i<=r;i++) { for(int j=1;j<=c;j++) scanf("%d",&mp[i][j]); } for(int i=1;i<=r;i++) { for(int j=1;j<=c;j++) { int gg=dfs(i,j); ans=max(ans,gg); } } printf("%d\n",ans); } return 0; }
相关文章推荐
- linux优化基础之更改“字符集”
- Android ImageView的scaleType属性与adjustViewBounds属性
- ARM体系中存储系统非对齐的存储访问操作
- 《leetCode》:Product of Array Except Self
- 虚函数 纯虚函数 抽象类 接口
- sdffffffffffffffffffffffffffffffffffff
- EL表达式中 empty 和 null 区别
- HDU 1584 蜘蛛牌(很经典的深搜)
- Android中pendingIntent的深入理解
- js 关于BOM浏览器兼容问题 函数封装
- Xcode打包ipa的步骤(简述)
- Javascript-网页编程-DHTML-下拉菜单
- C++ PP chapter Ⅶ C++的编程模块
- 7.16第一题“竞赛排名”
- Linux下查看哪些文件占用磁盘空间比较大
- Dictionary抽象类源码解析
- 一次爬虫实践学习(C#)
- 超简单方法搭建Eclipse下的Android NDK
- Linux 服务器安装配置 TimeMachine
- 【JVM】(一):Java内存模型