hdu1078 FatMouse and Cheese(记忆化搜索)
题目链接:
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(记忆化搜索)相关推荐
- HDU ACM 1078 FatMouse and Cheese 记忆化+DFS
题意:FatMouse在一个N*N方格上找吃的,每一个点(x,y)有一些吃的,FatMouse从(0,0)的出发去找吃的.每次最多走k步,他走过的位置能够吃掉吃的.保证吃的数量在0-100.规定他仅仅 ...
- FatMouse and Cheese HDU - 1078(记忆化搜索入门模板)
题意: n * n的正方形格子(每个格子均放了奶酪),老鼠从(0,0)开始,每次最多移动k步,可以选择上下左右四个方向移动,下一个移动点奶酪块数量必须要大于当前点. 整理模板ing- 题目: FatM ...
- 记忆化搜索,FatMouse and Cheese
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1107 http://acm.hdu.edu.cn/showpro ...
- HDU 1078 FatMouse and Cheese【记忆化搜索】
<题目链接> 题目大意: 给你一个n*n的矩阵,每个矩阵上有相应数量的奶酪,老鼠一次最多走K步,且每次只能横着走或者竖着走,并且每一次停留位置上的奶酪数一定要多余它刚才的奶酪数,求这只老鼠 ...
- 记忆化搜索例题 记忆化搜索
1.poj 1579 题目链接: http://poj.org/problem?id=1579 代码如下: #include <cstdio> #include <cstring& ...
- 洛谷P1057 传球游戏(记忆化搜索)
点我进入题目 题目大意:n个小孩围一圈传球,每个人可以给左边的人或右边的人传球,1号小孩开始,一共传m次,请问有多少种可能的路径使球回到1号小孩. 输入输出:输入n,m,输出路径的数量. 数据范围:4 ...
- 图论 ---- 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 ...
- 思维dp ---- Codeforces Round #711 (Div. 2) - C. Planar Reflections[dp/记忆化搜索]
题目链接 题目大意: 就是给你n个平面和一个寿命为k的衰变粒子.开始粒子从左向右飞行,粒子每经过一个平面就会产生一个副本粒子,这个副本粒子比原粒子的寿命少1,即为k-1,并且飞行方向是原粒子的反方向. ...
- Discovering Gold LightOJ - 1030[概率dp或者记忆化搜索]
题目大意:有一个[1,n][1,n][1,n]的数轴,数轴上的每个对应位置上都有金矿,你初始位置是1,然后你每次都会投色子决定你下一步跳到哪里,如果你跳出了nnn,那么你就要重新投.问你跳到nnn的时 ...
- BZOJ 1589 Trick or Treat on the Farm (tarjan缩点,记忆化搜索)[Usaco 2008 Dec Gold]【BZOJ计划】
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Weblink https://hydro.ac/d/bzoj/p/1589 Problem 每年万圣 ...
最新文章
- Linux下创建硬链接,文件访问为空,提示:xxxx: 符号连接的层数过多
- php接口数据安全解决方案(一)
- python调用dll依赖项
- python语法_嵌套
- 致27岁的老光棍天空
- Kafka参数图鉴——unclean.leader.election.enable
- Expression Blend实例中文教程(4) - 布局控件快速入门Canvas
- 阿里巴巴微服务开源项目盘点(持续更新)
- java notify唤醒原理_Java wait和notify虚假唤醒原理
- GO语言的进阶之路-Golang高级数据结构定义
- QOS之NBAR 下
- 在两个ASP.NET页面之间传递值
- 聚类分析方法的研究与应用综述
- 【附源码】计算机毕业设计java医院人事及科室病区管理设计与实现
- Android实现可编辑下拉菜单
- OpenGL学习笔记——处理键盘输入
- linux 有名管道(FIFO)
- 多分类问题中sklearn的RFECV指定scoring函数
- while和do...while循环测试总结
- 饿了么的PWA升级实践