POJ 1088 滑雪 DFS 记忆化搜索
2013-11-14 08:52
190 查看
http://poj.org/problem?id=1088
校运会放假继续来水一发^ ^
不过又要各种复习,功课拉下了许多 QAQ。
还有呀,就是昨天被一个学姐教育了一番,太感谢了,嘻嘻^ ^
好了,说正事~
题目大意:
中文题吖,就不用我说了哈哈~~~~~~做中文题真舒服,不用开词典^ ^
思路:
搜索的时候显然会有重复的所以采用记忆化搜索。
顺带用了下宏定义,让代码简洁点。
校运会放假继续来水一发^ ^
不过又要各种复习,功课拉下了许多 QAQ。
还有呀,就是昨天被一个学姐教育了一番,太感谢了,嘻嘻^ ^
好了,说正事~
题目大意:
中文题吖,就不用我说了哈哈~~~~~~做中文题真舒服,不用开词典^ ^
思路:
搜索的时候显然会有重复的所以采用记忆化搜索。
顺带用了下宏定义,让代码简洁点。
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; #define F(i,R) for(int i=0;i<R;i++) int a[101][101]; int ans[101][101]; int R,C; int dfs(int r,int c) { if(ans[r][c]>0) return ans[r][c]; int temp=0,res=1; if(r<R-1 && a[r][c] > a[r+1][c]) res=dfs(r+1,c)+1; if(c<C-1 && a[r][c] > a[r][c+1]) { temp=dfs(r,c+1)+1; res = res> temp ? res: temp; } if(r>=1 && a[r][c] > a[r-1][c]) { temp=dfs(r-1,c)+1; res = res> temp ? res: temp; } if(c>=1 && a[r][c] > a[r][c-1]) { temp=dfs(r,c-1)+1; res = res> temp ? res: temp; } return ans[r][c]=res; } int main() { memset(ans,-1,sizeof(ans)); scanf("%d%d",&R,&C); F(i,R) F(j,C) scanf("%d",&a[i][j]); int x=1; F(i,R) F(j,C) { int temp=dfs(i,j); x= x > temp? x: temp; } printf("%d\n",x); }
相关文章推荐
- Js nodeType 属性全面解析
- 土豪公司玩转土豪游戏,《将三国》背后的“战略转型”
- OCP-1Z0-052-V8.02-70题
- 天才们为什么独身一世?
- C++迭代器的使用
- 沸腾十五年:1995-2009
- 如何自定义wordpress登录界面的Logo
- java流类
- hibernate 配置
- Java中super的几种用法并与this的区别
- java数组基本排序
- 实验十(二)-1、输入一个字符串和一个正整数x,将该字符串中的后x个字符复制到另一个字符串y中,输出字符串y;再对y串的内容前后倒置后存入数组z中并输出。
- jQuery 倒计时
- Linux网络编程(五)
- 解决:java不是内部或外部命令 也不是可运行的程序
- 2013-11-9 做的一次系统宕机诊断及总结
- java和数据库的连接
- 数据库连接池配置部分
- PHP获取文章发布时间
- AJAX解析XML实例之下拉框二级联动