HDU ACM 1078 FatMouse and Cheese 记忆化+DFS[通俗易懂]

HDU ACM 1078 FatMouse and Cheese 记忆化+DFS

大家好,又见面了,我是全栈君。

题意:FatMouse在一个N*N方格上找吃的,每一个点(x,y)有一些吃的,FatMouse从(0,0)的出发去找吃的。每次最多走k步,他走过的位置能够吃掉吃的。保证吃的数量在0-100。规定他仅仅能水平或者垂直走,每走一步。下一步吃的数量须要大于此刻所在位置,问FatMouse最多能够吃多少东西。

须要对步数进行扩展。

#include<iostream>
using namespace std;

#define N 101
#define max(a,b) ((a)>(b)?(a):(b))
int dp[N][N],map[N][N];
int k,n;
int dir[4][2]={{1,0},{0,1},{-1,0},{0,-1}};

bool ok(int x,int y)         //推断边界
{
	return x>=0 && y>=0 && x<n && y<n;
}

int dfs(int x,int y)              //记忆化搜索
{
	int i,j,max=0,xt,yt,tmp;

	if(dp[x][y]>0)
		return dp[x][y];
	for(i=0;i<4;i++)
		for(j=1;j<=k;j++)
		{
			xt=dir[i][0]*j+x;
			yt=dir[i][1]*j+y;
			if(ok(xt,yt)&&map[x][y]<map[xt][yt])
			{
				tmp=dfs(xt,yt);
				if(tmp>max)            //找到最大的
					max=tmp;
			}
		}
	dp[x][y]=max+map[x][y];
	return dp[x][y];
}

int main()      
{
	int i,j;

	while(scanf("%d%d",&n,&k)==2 && k!=-1 && n!=-1)
	{
		for(i=0;i<n;i++)
			for(j=0;j<n;j++)
				scanf("%d",&map[i][j]);
		memset(dp,0,sizeof(dp));
		cout<<dfs(0,0)<<endl;
	}
    return 0;      
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115734.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • BI—脚不一样的感觉

    BI—脚不一样的感觉

    2022年1月8日
    52
  • App测试面试题_手机软件测试

    App测试面试题_手机软件测试1.Web端测试和App端测试有何不同(常见)系统结构方面Web项目,b/s架构,基于浏览器的;Web测试只要更新了服务器端,客户端就会同步会更新;App项目,c/s结构的,必须要有客户端;App修改了服务端,则客户端用户所有核心版本都需要进行回归测试一遍;兼容方面Web项目:a.浏览器(火狐、谷歌、IE等)b.操作系统(Windows7、Windows10、Linux等)App项目:a.设备系统:iOS(ipad、iphone)、Android(三星、华为、联想等)、

    2025年9月19日
    7
  • 在ThinkPHP中,if标签和比较标签对于变量的比较。

    在ThinkPHP中,if标签和比较标签对于变量的比较。

    2021年9月18日
    42
  • 将一个接口响应时间从2s优化到 200ms以内的一个案例

    将一个接口响应时间从2s优化到 200ms以内的一个案例一 背景在开发联调阶段发现一个接口的响应时间特别长 经常超时 囧 本文讲讲是如何定位到性能瓶颈以及修改的思路 将该接口从 2s 左右优化到 200ms 以内 二 步骤 2 1 定位定位性能瓶颈有两个思路 一个是通过工具去监控 一个是通过经验去猜想 2 1 1 工具监控就工具而言 推荐使用 arthas 用到的是 trace 命令具体安装步骤很简单 大家自行研究 我的使用步骤是

    2025年7月7日
    6
  • 对dropout的理解详细版[通俗易懂]

    对dropout的理解详细版[通俗易懂]dropout可以让模型训练时,随机让网络的某些节点不工作(输出置零),也不更新权重(但会保存下来,下次训练得要用,只是本次训练不参与bp传播),其他过程不变。我们通常设定一个dropoutradio=p,即每个输出节点以概率p置0(不工作,权重不更新),假设每个输出都是独立的,每个输出都服从二项伯努利分布p(1-p),则大约认为训练时,只使用了(1-p)比例的输出,相当于每次训练一个子网络。测…

    2022年5月2日
    73
  • mac键位的键盘_键盘键位图高清126键

    mac键位的键盘_键盘键位图高清126键mac和Windows在键盘上还是有一些差距的,在习惯了Windows的键位之后还是很难第一时间转换到mac的键位上,为大家整理了一下mac的键位分布,和常用的快捷键。Mac键盘键位分布【F1~12】与传统键盘不同的是,Mac键盘,只是多了几个功能键,可以简单将Mac上的【fn+F112】对应Win上【F112】,其Mac环境上的功能,如下图标注所示。Command键(⌘)Command键是mac独有的一个按键,大多数的快捷组合键都是和它配合使用,相当于Windows下的Ctrl键的功能,但

    2025年6月10日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号