poj 1088
来源:互联网 发布:视频剪辑合成配音软件 编辑:程序博客网 时间:2024/06/07 00:57
代码写的很挫
记忆化搜索,对搜过的点不在进行搜索,回溯过程中得出dp[i][j]的值
#include<iostream>#include<cstring>using namespace std; int n,m;int dir[][2]={{1,0},{0,1},{-1,0},{0,-1}};int a[1000][1000];int dp[1000][1000];int dfs(int x,int y){ int i,j,k; if(dp[x][y]>0) return dp[x][y]; int xx=x+dir[0][0]; int yy=y+dir[0][1]; if(xx<=n&&yy<=m&&xx>=1&&yy>=1) { if(a[x][y]>a[xx][yy]) (dp[x][y]=max(dp[x][y],dfs(xx,yy))); } xx=x+dir[1][0]; yy=y+dir[1][1]; if(xx<=n&&yy<=m&&xx>=1&&yy>=1) { if(a[x][y]>a[xx][yy]) (dp[x][y]=max(dp[x][y],dfs(xx,yy))); } xx=x+dir[2][0]; yy=y+dir[2][1]; if(xx<=n&&yy<=m&&xx>=1&&yy>=1) { if(a[x][y]>a[xx][yy]) (dp[x][y]=max(dp[x][y],dfs(xx,yy))); } xx=x+dir[3][0]; yy=y+dir[3][1]; if(xx<=n&&yy<=m&&xx>=1&&yy>=1) { if(a[x][y]>a[xx][yy]) (dp[x][y]=max(dp[x][y], dfs(xx,yy))); } dp[x][y]=dp[x][y]+1; return dp[x][y];}int main(){ while(cin>>n>>m) { memset(a,0,sizeof(a)); int i,j,k; int maxx=-1; for(i=1;i<=n;i++) for(j=1;j<=m;j++) { cin>>a[i][j]; } memset(dp,0,sizeof(dp)); for(i=1;i<=n;i++) for(j=1;j<=m;j++) { dp[i][j]=dfs(i,j); } maxx=0; for(i=1;i<=n;++i) { for(j=1;j<=m;j++) if(maxx<dp[i][j]) { maxx=dp[i][j]; } } cout<<maxx<<endl; }}
0 0
- POJ 1088
- POJ 1088
- poj 1088
- poj 1088
- POJ 1088
- poj 1088
- poj 1088
- poj 1088
- poj 1088
- poj 1088
- poj 1088
- poj--1088
- POJ 1088
- poj 1088
- poj 1088
- POJ 1088
- poj 1088
- POJ 1088
- How to Use Docker on OS X: The Missing Guide (杂译)
- 【神题】URAL 1575 Yekaterinburg Subway 2
- Maven: Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform dep
- 实现逆波兰表达式的java计算器
- wordpress中如何自定义链接为新窗口
- poj 1088
- VMWare下扩展Linux硬盘空间
- Dubbo实例
- POJ 1961 Period (KMP)
- VMWare下扩展Linux硬盘空间
- 安卓中常用的方法总结
- 长城守卫 Beijing guards CERC 2004 LA3177 解题总结
- Apache Solr单机环境配置(包括中文分词和Java API的使用)
- 断箭:不相信自己的意志,永远也做不成将军