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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 全网最详细黑苹果安装教程,小白一看就懂!

    全网最详细黑苹果安装教程,小白一看就懂!可以说:这是一套目前最全面的黑苹果安装教程,为了能让每个新手,更好的理解和掌握相关方法,教程按操作流程书写,新手请务必按顺序阅读,以便提高学习效率,高手可以随意观看,或者飘过。由于篇幅长度有限,一篇文章无法全部展现,更多具体内容请点击下方章节阅读。教程目录一、前言1,什么是黑苹果?二、硬件支持1,如何确认电脑是否支持安装黑苹果?三、准备工作1,黑苹果安装必备工具下载2,黑苹果启动U盘制作方法​3,配置EFI引导文件4,硬盘分区的设置方法​四、开始安装1,BIOS设置讲解!2,开

    2022年6月4日
  • Linux查看mysql 安装路径和运行路径[通俗易懂]

    Linux查看mysql 安装路径和运行路径

    2022年2月9日
  • 实现异步的几种方式_异步怎么实现

    实现异步的几种方式_异步怎么实现FIFO根据输入输出时钟是否一致,分为同步FIFO与异步FIFO。本文以异步FIFO与同步FIFO的异同入手,在比较过程中逐步对异步FIFO进行分析,介绍异步FIFO相比于同步FIFO的额外处理,最终实现异步FIFO,并进行了仿真、调试、以及验证

    2022年8月13日
  • 多台路由器堆叠_h3c路由器堆叠配置命令[通俗易懂]

    多台路由器堆叠_h3c路由器堆叠配置命令[通俗易懂]本次网络的拓扑结构是三台交换机连接到一起,依次为A交换机,B交换机和C交换机。交换机A是主交换机,他通过G1/1接口连接B交换机的G1/1接口,通过G2/1连接C交换机的G1/1。所有G端口都设置为VLAN100。这个A交换机作为主交换机完全是网络管理员自己选择的,实际上我们可以随意的将ABC中的任何一个选择为主交换机,大家根据实际情况选择即可。IP地址与Trunk设置:首先将网络的管理VLAN…

    2022年10月17日
  • 数据结构—完全二叉树「建议收藏」

    数据结构—完全二叉树「建议收藏」上篇博客介绍了一种非线性结构—普通树的含义以及一些特性,本文将介绍二叉树、满二叉树以及完全二叉树的一些特性及实现。首先,什么是二叉树?二叉树,是度为二的树,二叉树的每一个节点最多只有二个子节点,

    2022年6月30日
  • ldc1614 c语言编程,LDC1614读回来的数据为固定值不变[通俗易懂]

    ldc1614 c语言编程,LDC1614读回来的数据为固定值不变[通俗易懂]OtherPartsDiscussedinThread:LDC1614,LDC1314,LDC1614EVM求教一下各位前辈,硬件是用的LDC1614的评估板,ch0和ch1上接了两个线圈,并联的电容为100pF,器件ID和装配ID读出来为0x3055和0x5449,和手册上的一致,而且我写寄存器再读出来数据都是对的,排除了软件驱动上的问题,现在可能是配置上有哪里不对,或者芯片有问题(…

    2022年6月7日

发表回复

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

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