hdu 1078 FatMouse and Cheese (dfs+记忆化搜索)

hdu 1078 FatMouse and Cheese (dfs+记忆化搜索)

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

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 4811    Accepted Submission(s): 1945




Problem Description
FatMouse has stored some cheese in a city. The city can be considered as a square grid of dimension n: each grid location is labelled (p,q) where 0 <= p < n and 0 <= q < n. At each grid location Fatmouse has hid between 0 and 100 blocks of cheese in a hole. Now he’s going to enjoy his favorite food.

FatMouse begins by standing at location (0,0). He eats up the cheese where he stands and then runs either horizontally or vertically to another location. The problem is that there is a super Cat named Top Killer sitting near his hole, so each time he can run at most k locations to get into the hole before being caught by Top Killer. What is worse — after eating up the cheese at one location, FatMouse gets fatter. So in order to gain enough energy for his next run, he has to run to a location which have more blocks of cheese than those that were at the current hole.

Given n, k, and the number of blocks of cheese at each grid location, compute the maximum amount of cheese FatMouse can eat before being unable to move. 

 


Input
There are several test cases. Each test case consists of 

a line containing two integers between 1 and 100: n and k 

n lines, each with n numbers: the first line contains the number of blocks of cheese at locations (0,0) (0,1) … (0,n-1); the next line contains the number of blocks of cheese at locations (1,0), (1,1), … (1,n-1), and so on. 

The input ends with a pair of -1’s. 

 


Output
For each test case output in a line the single integer giving the number of blocks of cheese collected. 

 


Sample Input
   
   
3 1 1 2 5 10 11 6 12 12 7 -1 -1

 


Sample Output
   
   
37

 

题意是说每次能够走(1~K)个在同一直线的位置,即不能拐弯走。

数组较大,用记忆化搜索

(类似于poj1088滑雪)

#include"stdio.h"
#include"string.h"
#include"queue"
#include"vector"
#include"stack"
#include"algorithm"
using namespace std;
#define N 105
#define max(a,b) (a>b?a:b)
int g[N][N],n,k;
int h[N][N];
int dir[4][2]={0,1,0,-1,-1,0,1,0};
int judge(int x,int y)
{
    if(x<0||x>=n||y<0||y>=n)
        return 0;
    return 1;
}
int dfs(int x,int y)
{
    if(h[x][y])
        return h[x][y];
    int i,j,u,v,t,sum=0,s1;
    t=g[x][y];
    for(i=0;i<4;i++)
    {
        for(j=1;j<=k;j++)
		{
			u=x+dir[i][0]*j;
            v=y+dir[i][1]*j;
            if(judge(u,v)&&g[u][v]>t)
            {
                s1=dfs(u,v);
                sum=max(sum,s1);
            }
		}
    }
    return h[x][y]=g[x][y]+sum;
}
int main()
{
    int i,j;
    while(scanf("%d%d",&n,&k),n!=-1||k!=-1)
    {
        for(i=0;i<n;i++)
        {
            for(j=0;j<n;j++)
            {
                scanf("%d",&g[i][j]);
                h[i][j]=0;
            }
        }

        int ans=dfs(0,0);
        printf("%d\n",ans);
    }
    return 0;
}

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

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

(0)
上一篇 2022年2月5日 上午11:00
下一篇 2022年2月5日 上午11:00


相关推荐

  • 三次样条插值优缺点_matlab中三次样条差值

    三次样条插值优缺点_matlab中三次样条差值三次样条插值分段线性插值的优点:计算简单、稳定性好、收敛性有保证且易在计算机上实现缺点:它只能保证各小段曲线在连接点的连续性,却无法保证整条曲线的光滑性,这就不能满足某些工程技术的要求。三次Hermit插值优点:有较好的光滑性,缺点:要求节点的一阶导数已知。从20世纪60年代开始,首先由于航空、造船等工程设计的需要而发展起来所谓样条(Spline)插值方法,既保留了分段低次插值多项式的各种优点,又…

    2025年6月24日
    4
  • 当OpenClaw成为数字员工,个人隐私如何避免被‘龙虾’钳住?

    当OpenClaw成为数字员工,个人隐私如何避免被‘龙虾’钳住?

    2026年3月12日
    2
  • 4个基本不等式的公式高中_高中4个基本不等式的公式

    4个基本不等式的公式高中_高中4个基本不等式的公式高中4基本不等式:√[(a2+b2)/2]≥(a+b)/2≥√ab≥2/(1/a+1/b)。平方平均值≥算术平均数≥几何平均数≥调和平均数。基本不等式的两个技巧“1”使用。如果标题中有两个公式,则它们之和为常数,要求这两个公式的倒数之和的最小值,常用所把这个公式乘以1,然后把1让我们使用上一个常量,可以通过扩展这两个公式来计算。如果你知道两个公式的倒数之和是常数,求两个公式之和的最小值,方法同上。…

    2022年4月27日
    108
  • java 盲水印_3步搞定图像盲水印?试试云开发扩展能力

    java 盲水印_3步搞定图像盲水印?试试云开发扩展能力你以为云开发还只能在微信小程序中使用 那你可能就 OUT 啦 你以为云开发只有基础服务 那你可能就 OUT 啦 云开发不仅支持多端 微信小程序 Web 应用 APP 应用 小程序 更提供丰富的扩展能力 现在 基于云开发 你不再需要进行复杂的配置和调试 可以高效地调用腾讯云上的其他服务和资源 有什么样的愿望 就有什么样的能力 云开发扩展能力正式发布 云开发 CloudBase 是一款云端一体化的产品方

    2026年3月19日
    2
  • python把数据存入txt_python数据保存为csv文件

    python把数据存入txt_python数据保存为csv文件参考:Python中文件的读取和写入PYTHON将list或/dict对象写入txt/json文件python(如何将数据写入本地txt文本文件)python中文件写入TXTPython中将变量按行写入txt文本中python把变量写入txt文件。Python读写文件python文件操作Python之文件读写Python程序输出到文件中python把一个unicode字符串…

    2022年10月2日
    7
  • 用C语言来分割字符串

    相关:http://www.cnblogs.com/roucheng/p/cfenge.html

    2021年12月27日
    48

发表回复

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

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