FatMouse and Cheese
http://acm.hdu.edu.cn/showproblem.php?pid=1078
题解:记忆化搜索
这个题可以用深搜去做,从(0,0)点出发,两层for循环记录位置,外层代表四个方向,内层是走了多少步,走到一个位置如果数值比前一步大的话,加上数值继续dfs,每次返回时更新一下最大值。在两层for循环结束后,得到的maxx的值就是该点能得到的最多奶酪数,然后将maxx赋给book[x][y]记录一下这个点的最大奶酪数,这个题有一个剪枝,如果遇到一个点它被记录过了,那么直接用就行了,不用再搜索。最后返回到主函数加上(0,0)点对应的值就好了。
/*
*@Author: STZG
*@Language: C++
*/
#include <bits/stdc++.h>
#include<iostream>
#include<algorithm>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<string>
#include<vector>
#include<bitset>
#include<queue>
#include<deque>
#include<stack>
#include<cmath>
#include<list>
#include<map>
#include<set>
//#define DEBUG
#define RI register int
using namespace std;
typedef long long ll;
//typedef __int128 lll;
const int N=1000+10;
const int MOD=1e9+7;
const double PI = acos(-1.0);
const double EXP = 1E-8;
const int INF = 0x3f3f3f3f;
int t,n,m,k;
ll ans,cnt,flag,temp;
ll a[N][N];
int b[][2]={1,0,0,1,-1,0,0,-1};
ll c[N][N];
bool vis[N][N];
char str;
void dfs(int x,int y){//printf("%d %d\n",x,y);if(c[x][y])return;c[x][y]=a[x][y];for(int i=0;i<4;i++){for(int j=1;j<=k;j++){int tx=x+b[i][0]*j;int ty=y+b[i][1]*j;if(tx<1||tx>n||ty<1||ty>n)break;if(a[x][y]<a[tx][ty]){dfs(tx,ty);c[x][y]=max(c[x][y],c[tx][ty]+a[x][y]);}}}
}int main()
{
#ifdef DEBUGfreopen("input.in", "r", stdin);//freopen("output.out", "w", stdout);
#endif//;//scanf("%d",&t);while(~scanf("%d%d",&n,&k)){if(n==-1&&k==-1)break;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)scanf("%lld",&a[i][j]);memset(c,0,sizeof(c));dfs(1,1);printf("%lld\n",c[1][1]);}//cout << "Hello world!" << endl;return 0;
}
FatMouse and Cheese相关推荐
- 动态规划训练21 [FatMouse and Cheese HDU - 1078 ]
FatMouse and Cheese HDU - 1078 这道题需要说一说,定义dp[x][y]表示从点(x,y)出发,每次走不超过k步,所能吃到的最大量. 有点难搞的是,这里递归的顺序不好确定, ...
- zoj 1107 FatMouse and Cheese 逆向动态规划
FatMouse and Cheese 开始试着用深度搜索做,超时了(对于时间复杂度没有概念) 这道题用动态规划.如果用自顶向下的方法,我们不知道结尾的是哪个点,所以不方便用. 如果我们采用自下而上的 ...
- HDUOJ 1078 FatMouse and Cheese
HDUOJ 1078 FatMouse and Cheese 题目链接 Problem Description FatMouse has stored some cheese in a city. T ...
- FatMouse and Cheese HDU - 1078(记忆化搜索入门模板)
题意: n * n的正方形格子(每个格子均放了奶酪),老鼠从(0,0)开始,每次最多移动k步,可以选择上下左右四个方向移动,下一个移动点奶酪块数量必须要大于当前点. 整理模板ing- 题目: FatM ...
- 【HDU - 1078】FatMouse and Cheese (记忆化搜索dp)
题干: FatMouse has stored some cheese in a city. The city can be considered as a square grid of dimens ...
- ACM DP FatMouse and Cheese
题目: FatMouse has stored some cheese in a city. The city can be considered as a square grid of dimens ...
- HDU - 1078 FatMouse and Cheese
再谈记忆化搜索 题目描述: FatMouse has stored some cheese in a city. The city can be considered as a square grid ...
- HDU ACM 1078 FatMouse and Cheese 记忆化+DFS
题意:FatMouse在一个N*N方格上找吃的,每一个点(x,y)有一些吃的,FatMouse从(0,0)的出发去找吃的.每次最多走k步,他走过的位置能够吃掉吃的.保证吃的数量在0-100.规定他仅仅 ...
- 记忆化搜索,FatMouse and Cheese
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1107 http://acm.hdu.edu.cn/showpro ...
- 计蒜客--肥肥鼠吃奶酪( FatMouse and Cheese)
简化版题目 有一个n * n的网格,每个洞里藏有0~ 100块奶酪:仓鼠从(0,0)开始走,由于一只猫的存在,所以仓鼠每次只能水平或垂直走1~k步:由于吃了奶酪仓鼠会变胖,所以每一次走到的洞里的奶酪都 ...
最新文章
- 115. Leetcode 718. 最长重复子数组 (动态规划-子序列问题)
- C++ Primer 5th笔记(chap 14 重载运算和类型转换)输入和输出运算符
- QT快速入门、三点求圆心实现详解
- jquery : 动态构建表单自动提交请求
- StarUML 逆向工程插件加载失败问题解决
- IntelliJ IDEA 源值1.5已过时,将在未来所有版本中删除
- iphone微信美颜插件_iOS13.5 插件分享
- python命令符bash_从python结构执行远程bash命令时“转义”$
- java 定时器 quartz_Java定时器和Quartz使用
- Netlink 0002 -- 什么是Netlink
- 软件著作权申报中60页标准代码文档的写作经验谈(1)
- 2015美国大学计算机科学专业排名,2015美国大学本科计算机专业排名前一百
- 如何设计一个风控实验?以度小满风控实验平台架构设计为例
- 用.Net Core接入微信公众号开发
- 离开 FB 两年后,Instagram 创始人干嘛去了?
- 你的语言模型有没有“无法预测的词”?
- 计算机三级相当于什么水平,【catti笔译三级证书相当于什么水平?】- 环球网校...
- SUMO 交通小区 OD流量建模 OD转换交通流
- 计算机病毒通过读写或复制移动,计算机病毒除通过读写或复制移动存储器上带病毒的文件传染外,另一条主要的传染途径是...
- 神州数码2855路由器ppp multilink 配置
热门文章
- 浅谈python_浅谈python-Django
- 使用计算机的好处,电脑的好处
- 打地鼠c语言代码_女白领在家玩打地鼠游戏,无意间学会python编程,还有教程有源码...
- 我的世界梦之边缘5服务器在维护吗,8月5日服务器例行维护公告(已完成)
- 怎么删除结构体数组中的一组数据_数据结构-栈
- python的datetime举例_Python datetime.timedelta()用法及代码示例
- style 放入css文件失效_React中使用CSS的7种方式
- 我的Java教程,不断整理,反复学习,记录着那些年大学奋斗的青春
- 【小白学习PyTorch教程】十九、 基于torch实现UNet 图像分割模型
- 十七、深入Python异常处理