POJ1088滑雪(记忆化搜索+DFS||经典的动态规划)
2015-08-21 15:36
363 查看
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 84297 | Accepted: 31558 |
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
#include<cstdio> #include<cstring> int pic[105][105], dp[105][105], n, m; const int dir[4][2] = {0, 1, 1, 0, 0, -1, -1, 0}; int limit(int x, int y) { if(x<1||x>n||y<1||y>m) return 0; return 1; } int dfs(int x, int y) { if(dp[x][y]) return dp[x][y]; int pre, flag, sum; pre=flag=sum=0; for(int i=0; i<4; i++) { int nx = x+dir[i][0]; int ny = y+dir[i][1]; if(limit(nx, ny)&&pic[nx][ny]<pic[x][y]) { pre = dfs(nx, ny); sum = sum>pre?sum:pre; flag = 1; } } if(flag) dp[x][y] = sum+1; else dp[x][y] = 1; return dp[x][y]; } int main() { while(scanf("%d%d", &n, &m)!=EOF) { for(int i=1; i<=n; i++) for(int j=1; j<=m; j++) scanf("%d", &pic[i][j]); int Max = 0; memset(dp, 0, sizeof(dp)); for(int i=1; i<=n; i++) for(int j=1; j<=m; j++) { dp[i][j] = dfs(i, j); if(Max<dp[i][j]) Max = dp[i][j]; } printf("%d\n", Max); } return 0; }
即: 用dp[x][y]记录下在该点的最长路径。 减少了在枚举时的好多重复!
状态转移方程:
DP (x, y)=max(DP(x, y-1), DP(x, y+1), DP(x-1, y), DP(x+1, y))+1;
相关文章推荐
- appium安装
- oralce11g agent与oms无法连接
- TCP/IP-链路层
- 输出货币值
- jmc监控工具
- Linux 错误:fatal error: uuid/uuid.h: No such file or directory
- Android应用程序组件(二)
- Invert Binary Tree(翻转二叉树)
- 在C#中调用格式工厂进行任意视频格式到FLV的转换
- Execution failed for task ':app:compileDebugNdk'
- [2016实习] 摩根大通-量化金融-北京
- jquery实现叠层3D文字特效代码分享
- 通过rsync远程增量备份(差异备份)
- mysql--------InnoDB和MyISAM的区别
- 关于android:id="@+id/xx"的理解
- 角度来分析 腾讯 一些游客微通道系统问题 (一个)
- android 进程间通信数据(一)------parcel的起源
- c#**************
- 安全层次
- POJ 2362 搜索