NEFUOJ-18-滑雪
2017-04-26 20:03
232 查看
http://acm.nefu.edu.cn/JudgeOnline/problemShow.php?problem_id=18
就不给题意解释了。直接翻过去看吧,
用的记忆化搜索。
否则会tle的。
就不给题意解释了。直接翻过去看吧,
用的记忆化搜索。
否则会tle的。
#include <iostream> #include <cstdio> #include <algorithm> using namespace std; const int maxn=101; int fx[4][2]={{1,0},{-1,0},{0,1},{0,-1}}; int a[maxn][maxn]; int d[maxn][maxn]; int p[maxn][maxn]; int m,n; int solve(int x,int y,int sum) { if(x==0||x==m+1||y==0||y==n+1) return sum; if(d[x][y]&&p[x][y]) { return solve(d[x][y],p[x][y],sum+1); } int ans=0; int kk=0; for(int i=0;i<=3;i++) { if(a[x+fx[i][0]][y+fx[i][1]]<a[x][y]) kk=solve(x+fx[i][0],y+fx[i][1],sum+1); if(kk>ans) { d[x][y]=x+fx[i][0]; p[x][y]=y+fx[i][1]; ans=kk; } } return ans; } int main() { int sum=0; scanf("%d%d",&m,&n); for(int i=1;i<=m;i++) for(int j=1;j<=n;j++) scanf("%d",&a[i][j]); int ans=-1; int xx,yy; for(int i=1;i<=m;i++) for(int j=1;j<=n;j++) {sum=a[i][j]; if(ans<sum) { xx=i; yy=j; ans=sum; } } /*for(int i=1;i<=m;i++) {for(int j=1;j<=n;j++) printf("%d ",d[i][j]); printf("\n"); } for(int i=1;i<=m;i++) {for(int j=1;j<=n;j++) printf("%d ",p[i][j]); printf("\n"); }*/ cout<<solve(xx,yy,0)<<endl;; return 0; }
相关文章推荐
- 滑雪在日本 之 新泻篇 18
- NEFU18 滑雪
- 18 滑雪 dp-4
- NEFU OJ 18滑雪
- nefu 18 滑雪
- 【读书笔记《Android游戏编程之从零开始》】18.游戏开发基础(碰撞检测)
- linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结来源:互联网 作者:佚名 时间:04-18 23:35:10 【大 中 小】 linux下tar gz bz2 tgz z等众多压
- Fedora 18 安装和配置 tftp
- 数据结构基础(18) --哈希表的设计与实现
- java编程:判断是否可以结婚(同性,男的岁数<20,女的岁数<18,已婚的均不能结婚)
- [leetcode] 18 4Sum
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(18)-过滤器的使用和批量删除数据(伪删除和直接删除)
- 【Qt5开发及实例】18、图形修饰小工具
- fedora18下的xen安装与管理
- [每天一个知识点]18-Java语言-在switch中接受String类型
- 分支-18. 求一元二次方程的根(20)
- 机器人操作系统ROS Indigo 入门学习(18)——ROS wiki导航
- 18.元素分类--块级元素
- 18 第十八天【健身】