FatMouse and Cheese

HDU - 1078

这道题需要说一说,定义dp[x][y]表示从点(x,y)出发,每次走不超过k步,所能吃到的最大量。

有点难搞的是,这里递归的顺序不好确定,所以采用自顶向下的记忆化搜索的方式(不用担心后效性,因为每次走到新的位置的食物量都比当前的食物量要多,

因此这样定义子结构不具有后效性)

从起点开始搜索就行了

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int MAX = 107;
int dp[MAX][MAX];
int a[MAX][MAX];
int n,k;
int dt[4][2] = {{0,1},{0,-1},{1,0},{-1,0}};
int dfs(int x,int y){if(dp[x][y]) return dp[x][y];dp[x][y] = a[x][y];for(int d = 0;d < 4;d++){for(int i = 1;i <= k;i++){int nx = x + dt[d][0]*i;int ny = y + dt[d][1]*i;if(nx >= 1 && nx <= n && ny >= 1 && ny <= n){if(a[x][y] < a[nx][ny]){dp[x][y] = max(dp[x][y],dfs(nx,ny) + a[x][y]);}}}}return dp[x][y];
}
int main(){while(scanf("%d%d",&n,&k) != EOF && n + k + 2){memset(dp,0,sizeof(dp));memset(a,0,sizeof(a));for(int i = 1;i <= n;i++){for(int j = 1;j <= n;j++){scanf("%d",&a[i][j]);}}cout<<dfs(1,1)<<endl;}
}

动态规划训练21 [FatMouse and Cheese HDU - 1078 ]相关推荐

  1. FatMouse and Cheese HDU - 1078(记忆化搜索入门模板)

    题意: n * n的正方形格子(每个格子均放了奶酪),老鼠从(0,0)开始,每次最多移动k步,可以选择上下左右四个方向移动,下一个移动点奶酪块数量必须要大于当前点. 整理模板ing- 题目: FatM ...

  2. 动态规划训练15 [Monkey and Banana HDU - 1069 ]

    Monkey and Banana HDU - 1069 题意大致是将一个长方体通过旋转,使得摞起来的建筑最高.但是必须满足这么一个条件,那就是上面的长方体的底面一定要完全被下一个长方体的底面完全覆盖 ...

  3. HDUOJ 1078 FatMouse and Cheese

    HDUOJ 1078 FatMouse and Cheese 题目链接 Problem Description FatMouse has stored some cheese in a city. T ...

  4. zoj 1107 FatMouse and Cheese 逆向动态规划

    FatMouse and Cheese 开始试着用深度搜索做,超时了(对于时间复杂度没有概念) 这道题用动态规划.如果用自顶向下的方法,我们不知道结尾的是哪个点,所以不方便用. 如果我们采用自下而上的 ...

  5. POJ1088 滑雪题解+HDU 1078(记忆化搜索DP)

    Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道 ...

  6. 【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 ...

  7. HDU - 1078 FatMouse and Cheese

    再谈记忆化搜索 题目描述: FatMouse has stored some cheese in a city. The city can be considered as a square grid ...

  8. HDU ACM 1078 FatMouse and Cheese 记忆化+DFS

    题意:FatMouse在一个N*N方格上找吃的,每一个点(x,y)有一些吃的,FatMouse从(0,0)的出发去找吃的.每次最多走k步,他走过的位置能够吃掉吃的.保证吃的数量在0-100.规定他仅仅 ...

  9. hdu 1078 FatMouse and Cheese(记忆化搜索)

    题意:一个n*n的矩阵,每个点有若干块点心,小老鼠开始在左上角,每次最多往前走k步,且停留的点的点心数比上一次停留的点大,输出最大的i点心数 分析:停留的点数目必须比上次大,形成一个序,必定是一个DA ...

最新文章

  1. 现在的我为什么不泡技术论坛了
  2. vue 往对象中添加键值对_【Vue】Vue学习之混入
  3. B站上线斯坦福最新「机器学习系统(MLSys)」全集,小伙伴有福了!
  4. er图主码外码怎么看_霸屏了!因为这个老师,广科er纷纷表示要转专业了
  5. 使用chrome下载m3u8视频
  6. JAVA 基本运算符(摘)
  7. 数据中心调试的重新思考
  8. 文档怎么添加云服务器,如何添加云服务器地址
  9. ZZULIOJ 1103: 平均学分绩点(函数专题)
  10. (转)百度Map API
  11. 【Node学习】—运行node服务demo
  12. java工厂模式demo
  13. linux执行jmeter脚本解决响应数据为空
  14. 跨域cookie设置
  15. php5.5 pdo mysql_PHP5中使用PDO连接数据库的方法
  16. win7家庭普通版计算机桌面图标,Win7家庭普通版更改桌面图标方案
  17. MindManager2022注册码-激活码-序列号相关问题解答
  18. java五子棋人机对战_java swing人机对战五子棋
  19. 音乐播放器app android,mp3音乐播放器
  20. 按键精灵实现远程获取消息内容自动发送到群里(支持多个qq)

热门文章

  1. iphone4 base64 mp3 无法解析 html5,javascript - 如何使用HTML5在firefox上播放base64音频数据? - 堆栈内存溢出...
  2. 存储过程mysql报错1271_mysqldump备份失败以及解决方法汇总
  3. csv 字符串_python3从零学习-5.5.1、CSV 文件读写
  4. Java当中Collections的用法
  5. Java当中Map的认识和基本用法
  6. [Java基础]Math类的常用方法
  7. 十一届蓝桥杯国赛 美丽的2-枚举
  8. [蓝桥杯][基础练习VIP]芯片测试-思维
  9. linux权限746,linux文件权限学习笔一
  10. cubemx lan8720模块_通过STM32cubeMX将STM32F767+LAN8720+LwIP+FreeRTOS的以太网实现