poj 1088 滑雪(DFS +DP 记忆化搜索)
2011-08-22 16:26
260 查看
看到这这个题的时候,我想到了用动归,但不知怎嘛用,也考虑了DFS, 但仍然不知怎嘛用……无奈,上网参考了一下别人的代码,才AC了……哎,我是菜鸟啊……
#include<iostream> using namespace std; int r, c; int a[101][101]; int dp[101][101]={0}; int d[4][2]={{0,-1},{0,1},{-1,0},{1,0}}; int dfs(int i, int j) { int ii, jj, k, temp; if(dp[i][j])//已处理过,直接返回 return dp[i][j]; //状态转移方程 合法的情况下:DP(i,j) = max( DP(i,j-1), DP(i,j+1), DP(i-1,j), DP(i+1,j) ) + 1; for( k=0; k<4; k++)//由上下左右四个点得出dp[i][j]的最大值 { ii=i+d[k][0]; jj=j+d[k][1]; if( (ii>=0&&ii<r) &&(jj>=0&&jj<c) && a[ii][jj]<a[i][j]) { temp=dfs(ii, jj); if( dp[i][j]<temp+1 ) dp[i][j]=temp+1; } } return dp[i][j]; } int main() { cin>>r>>c; int i, j, max, temp; max=-1; for( i=0; i<r; i++) for( j=0; j<c; j++) { cin>>a[i][j]; dp[i][j]=0; } for( i=0; i<r; i++) for( j=0; j<c; j++) { temp=dfs(i, j); if( max<temp ) max=temp; } cout<<max+1<<endl; }
相关文章推荐
- POJ 1088 滑雪
- Poj_1088_滑雪(DP)
- poj 1088 滑雪
- poj_1088_滑雪
- 【原】 POJ 1088 滑雪 递归+memoization 解题报告
- POJ1088-滑雪 记忆化DP
- 滑雪(POJ 1088 记忆化搜索)
- POJ 1088 滑雪
- POJ:1088 滑雪
- poj-1088滑雪
- poj入门水题--动态规划(DP)2533 Longest Ordered Subsequence 1088滑雪
- POJ-1088~~~~~滑雪(递归+记忆化搜索)
- POJ-1088-滑雪-解题报告-动态规划-记忆化搜索
- poj 1088 滑雪
- POJ 1088 滑雪
- poj 1088 滑雪 记忆化搜索
- POJ 1088 滑雪
- POJ 1088 滑雪
- poj 1088 滑雪-----DP 动态规划
- poj 1088滑雪