POJ 1088 DP || 记忆化搜索
来源:互联网 发布:学生成绩录入系统源码 编辑:程序博客网 时间:2024/06/04 10:52
按高度从小到大排序一遍 DP即可:
#include "stdio.h"#include "string.h"#include "queue"#include "algorithm"using namespace std;int dir[4][2]={1,0,-1,0,0,1,0,-1};int n,m,Min,ans;int a[101][101],dp[101][101];struct node{ int x,y,h;}data[10010];bool cmp(const node a,const node b){ return a.h<b.h;}void bfs(){ int sum,i,j,x,y; sum=0; for (i=1;i<=n;i++) for (j=1;j<=m;j++) { data[sum].x=i; data[sum].y=j; data[sum].h=a[i][j]; sum++; } sort(data,data+sum,cmp); for (i=0;i<sum;i++) { for (j=0;j<4;j++) { x=data[i].x+dir[j][0]; y=data[i].y+dir[j][1]; if (x<1 || x>n || y<1 || y>m) continue; if (a[x][y]<=a[data[i].x][data[i].y]) continue; dp[x][y]=max(dp[x][y],dp[data[i].x][data[i].y]+1); } }}int main(){ int i,j; while (scanf("%d%d",&n,&m)!=EOF) { Min=10010; for (i=1;i<=n;i++) for (j=1;j<=m;j++) { scanf("%d",&a[i][j]); dp[i][j]=1; } bfs(); ans=1; for (i=1;i<=n;i++) for (j=1;j<=m;j++) if (dp[i][j]>ans) ans=dp[i][j]; printf("%d\n",ans); } return 0;}
裸记忆化搜索:
<pre name="code" class="cpp">#include "stdio.h"#include "string.h"int dir[4][2]={1,0,-1,0,0,1,0,-1};int n,m;int dp[101][101];int a[101][101];int M(int a,int b){ if (a<b) return b; else return a;}int bfs(int x,int y){ int ans,i; if (x<1 || x>n || y<1 || y>m) return -1; if (dp[x][y]!=-1) return dp[x][y]; ans=1; for (i=0;i<4;i++) { if (x+dir[i][0]<1 || x+dir[i][0]>n || y+dir[i][1]<1 || y+dir[i][1]>m) continue; if (a[x][y]<=a[x+dir[i][0]][y+dir[i][1]]) continue; ans=M(ans,bfs(x+dir[i][0],y+dir[i][1])+1); } dp[x][y]=ans; return ans;}int main(){ int Max,i,ans,j; while (scanf("%d%d",&n,&m)!=EOF) { Max=0; for (i=1;i<=n;i++) for (j=1;j<=m;j++) { scanf("%d",&a[i][j]); if (a[i][j]>Max) Max=a[i][j]; } memset(dp,-1,sizeof(dp)); ans=1; for (i=1;i<=n;i++) for (j=1;j<=m;j++) { ans=M(bfs(i,j),ans); } printf("%d\n",ans); } return 0;}
0 0
- poj 1088 (dp记忆化搜索)
- DP 记忆化搜索 poj 1088
- POJ 1088 滑雪(DP+记忆化搜索)
- POJ 1088 DP || 记忆化搜索
- POJ 1088 DP 记忆化搜索
- poj-1088-滑雪【记忆化搜索+DP】
- POJ - 1088 滑雪 DP+记忆化搜索
- poj 1088滑雪(记忆化搜索, dp)
- POJ 1088滑雪 记忆化搜索(搜索 + dp)
- poj 1088 滑雪(DFS +DP 记忆化搜索)
- poj 1088/nyoj 10 滑雪(记忆化搜索/DP)
- poj 1088 dp记忆化搜索状态( or dfs)
- POJ 1088: 滑雪(经典 DP+记忆化搜索)
- POJ-1088 滑雪 (记忆化搜索,dp)
- poj 1088 滑雪(记忆化搜索+dp)
- POJ - 1088 滑雪(DP/记忆化搜索)
- Poj 1088 滑雪 (简单DP + 记忆化搜索)
- poj 1088 滑雪(记忆化搜索 || DP)
- HBase应用:Table设计
- 编程之美之2.5 寻找最大的K个数
- 《小超教你写论文》第三篇-Caltech Pedestrain Benchmark,很利于研究的行人检测数据库介绍
- baiDu地图显示覆盖物
- AGPS定位基本原理浅析
- POJ 1088 DP || 记忆化搜索
- 二维指针与函数
- Centos SSHFS
- 影响力:承诺与一致原理
- 如何优化cocos2d/x程序的内存使用和程序大小
- 令我费解的源码
- C#控制鼠标代码实例
- (七)如何建立自己的package
- 关于python的编码问题的个人小结