题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=1078

题目大意:

题目中的k表示横向或者竖直最多可曾经进的距离,不可以拐弯。老鼠的出发点是(1,1)。

对于老鼠从当前点可以到达的点。筛选出从这些点到达当前点所能获得的cheese的最大值。

思路:记忆化搜索。

假设对于当前的点。没有被搜索过(dp[i][j]=0)。那么就对其进行搜索。搜索过程中记录下最优的解。

假设已经被搜索过了,就能够直接利用已经记录的值来进行推断 了,不须要再去搜索。

假设搜索完以后结果还是0。表明他不能再有新的路能够走了。结果就是他本身了。

#include<stdio.h>
#include<string.h>
#define LL __int64
#define max(a,b) a>b?

a:b int n,k; LL a[105][105],dp[105][105]; int dir[][2]={0,1,0,-1,1,0,-1,0}; void dfs(int x,int y) { for(int i=0;i<4;i++) { for(int j=1;j<=k;j++) { int xx=x+dir[i][0]*j; int yy=y+dir[i][1]*j; if(xx<=0||yy<=0||xx>n||yy>n)continue; if(a[xx][yy]>a[x][y]){ if(dp[xx][yy]==0){ //假设没有被搜索过 dfs(xx,yy); dp[x][y]=max(dp[xx][yy]+a[x][y],dp[x][y]); } else dp[x][y]=max(dp[xx][yy]+a[x][y],dp[x][y]); } } } if(dp[x][y]==0)dp[x][y]=a[x][y]; //表明已经没有路能够走了。 return ; } int main() { int i,j; while(scanf("%d%d",&n,&k)!=EOF) { if(n==-1&&k==-1)break; for(i=1;i<=n;i++) for(j=1;j<=n;j++) scanf("%I64d",&a[i][j]); memset(dp,0,sizeof(dp)); dfs(1,1); printf("%I64d\n",dp[1][1]); } return 0; }

hdu1078 FatMouse and Cheese(记忆化搜索)相关推荐

  1. HDU ACM 1078 FatMouse and Cheese 记忆化+DFS

    题意:FatMouse在一个N*N方格上找吃的,每一个点(x,y)有一些吃的,FatMouse从(0,0)的出发去找吃的.每次最多走k步,他走过的位置能够吃掉吃的.保证吃的数量在0-100.规定他仅仅 ...

  2. FatMouse and Cheese HDU - 1078(记忆化搜索入门模板)

    题意: n * n的正方形格子(每个格子均放了奶酪),老鼠从(0,0)开始,每次最多移动k步,可以选择上下左右四个方向移动,下一个移动点奶酪块数量必须要大于当前点. 整理模板ing- 题目: FatM ...

  3. 记忆化搜索,FatMouse and Cheese

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1107 http://acm.hdu.edu.cn/showpro ...

  4. HDU 1078 FatMouse and Cheese【记忆化搜索】

    <题目链接> 题目大意: 给你一个n*n的矩阵,每个矩阵上有相应数量的奶酪,老鼠一次最多走K步,且每次只能横着走或者竖着走,并且每一次停留位置上的奶酪数一定要多余它刚才的奶酪数,求这只老鼠 ...

  5. 记忆化搜索例题 记忆化搜索

    1.poj  1579 题目链接: http://poj.org/problem?id=1579 代码如下: #include <cstdio> #include <cstring& ...

  6. 洛谷P1057 传球游戏(记忆化搜索)

    点我进入题目 题目大意:n个小孩围一圈传球,每个人可以给左边的人或右边的人传球,1号小孩开始,一共传m次,请问有多少种可能的路径使球回到1号小孩. 输入输出:输入n,m,输出路径的数量. 数据范围:4 ...

  7. 图论 ---- F. Graph Traveler 记忆化搜索 + 思维预处理(数论同余恒等式)

    题目链接 题目大意: q∈[1,1e5],n∈[1,1000],mi∈[1,10]q\in[1,1e5],n\in[1,1000],m_i\in[1,10]q∈[1,1e5],n∈[1,1000],m ...

  8. 思维dp ---- Codeforces Round #711 (Div. 2) - C. Planar Reflections[dp/记忆化搜索]

    题目链接 题目大意: 就是给你n个平面和一个寿命为k的衰变粒子.开始粒子从左向右飞行,粒子每经过一个平面就会产生一个副本粒子,这个副本粒子比原粒子的寿命少1,即为k-1,并且飞行方向是原粒子的反方向. ...

  9. Discovering Gold LightOJ - 1030[概率dp或者记忆化搜索]

    题目大意:有一个[1,n][1,n][1,n]的数轴,数轴上的每个对应位置上都有金矿,你初始位置是1,然后你每次都会投色子决定你下一步跳到哪里,如果你跳出了nnn,那么你就要重新投.问你跳到nnn的时 ...

  10. BZOJ 1589 Trick or Treat on the Farm (tarjan缩点,记忆化搜索)[Usaco 2008 Dec Gold]【BZOJ计划】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Weblink https://hydro.ac/d/bzoj/p/1589 Problem 每年万圣 ...

最新文章

  1. Linux下创建硬链接,文件访问为空,提示:xxxx: 符号连接的层数过多
  2. php接口数据安全解决方案(一)
  3. python调用dll依赖项
  4. python语法_嵌套
  5. 致27岁的老光棍天空
  6. Kafka参数图鉴——unclean.leader.election.enable
  7. Expression Blend实例中文教程(4) - 布局控件快速入门Canvas
  8. 阿里巴巴微服务开源项目盘点(持续更新)
  9. java notify唤醒原理_Java wait和notify虚假唤醒原理
  10. GO语言的进阶之路-Golang高级数据结构定义
  11. QOS之NBAR 下
  12. 在两个ASP.NET页面之间传递值
  13. 聚类分析方法的研究与应用综述
  14. 【附源码】计算机毕业设计java医院人事及科室病区管理设计与实现
  15. Android实现可编辑下拉菜单
  16. OpenGL学习笔记——处理键盘输入
  17. linux 有名管道(FIFO)
  18. 多分类问题中sklearn的RFECV指定scoring函数
  19. while和do...while循环测试总结
  20. 饿了么的PWA升级实践

热门文章

  1. 【HDU-5246】超级赛亚ACMer(贪心)
  2. 浏览器通知--window.Notification
  3. 发布的站点自定义端口打不开解决方法
  4. 使用DotNetOpenAuth搭建OAuth2.0授权框架——Demo代码简单说明
  5. centos,apache运维经验
  6. docker容器运行后退出,怎么才能一直运行?【转】
  7. python中时间、日期、时间戳的转换
  8. 【C++】指针与引用的区别
  9. Servlet和JSP的区别与MVC模式
  10. Python标准库——走马观花