FatMouse and Cheese

开始试着用深度搜索做,超时了(对于时间复杂度没有概念)

这道题用动态规划。如果用自顶向下的方法,我们不知道结尾的是哪个点,所以不方便用。

如果我们采用自下而上的方法,用eatNum[i][j]表示从起点到达i, j 位置老鼠所吃的奶酪数,问题是一个节点可由几中不同的路径不同时得到,所以也会发现也会有重复的路要走。

书上的动态规划方法其实挺妙。用起点作为终点的样子,自顶向下,把结果集结到起点。看来我的思维是太局限了。

向各个方向探索用一个for循环实现也是非常值得借鉴的。

#include <iostream>
#include <cstring>
using namespace std;
#define size 110int a[size][size], n, k, eatNum[size][size];int memSearch(int r, int c){int r1, c1;     //新的位置int Max = 0;int i, temp;if(eatNum[r][c] != -1)  //中间结果return eatNum[r][c];//每次让FatMouse走一步,直到走k步for(i = 1; i <= k; i++){//上r1 = r - i;if(r1 >= 1 && r1 <= n && a[r1][c] > a[r][c]){temp = memSearch(r1, c);if(temp > Max)Max = temp;}//下r1 = r + i;if(r1 >= 1 && r1 <= n && a[r1][c] > a[r][c]){temp = memSearch(r1, c);if(temp > Max)Max = temp;}//左c1 = c - i;if(c1 >= 1 && c1 <= n && a[r][c1] > a[r][c]){temp = memSearch(r, c1);if(temp > Max)Max = temp;}//右c1 = c + i;if(c1 >= 1 && c1 <= n && a[r][c1] > a[r][c]){temp = memSearch(r, c1);if(temp > Max)Max = temp;}}eatNum[r][c] = Max + a[r][c];return eatNum[r][c];
}int main(){//freopen("in.txt", "r", stdin);int i, j;while(cin>>n>>k){if(n == -1 && k == -1)break;memset(eatNum, -1, sizeof(eatNum));   //存储中间结果for(i = 1; i <= n; i++){for(j = 1; j <= n; j++)cin>>a[i][j];                //接收数据}cout<<memSearch(1, 1)<<endl;}return 0;
}

zoj 1107 FatMouse and Cheese 逆向动态规划相关推荐

  1. 动态规划训练21 [FatMouse and Cheese HDU - 1078 ]

    FatMouse and Cheese HDU - 1078 这道题需要说一说,定义dp[x][y]表示从点(x,y)出发,每次走不超过k步,所能吃到的最大量. 有点难搞的是,这里递归的顺序不好确定, ...

  2. HDUOJ 1078 FatMouse and Cheese

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

  3. 记忆化搜索,FatMouse and Cheese

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1107 http://acm.hdu.edu.cn/showpro ...

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

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

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

  6. ACM DP FatMouse and Cheese

    题目: 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. 计蒜客--肥肥鼠吃奶酪( FatMouse and Cheese)

    简化版题目 有一个n * n的网格,每个洞里藏有0~ 100块奶酪:仓鼠从(0,0)开始走,由于一只猫的存在,所以仓鼠每次只能水平或垂直走1~k步:由于吃了奶酪仓鼠会变胖,所以每一次走到的洞里的奶酪都 ...

最新文章

  1. QSignalMapper的使用
  2. html自动补全pspad,免费代码编辑器 PSPad Editor 5.0.4.541 中文多语免费版
  3. oracle 之 EXP、IMP 使用简介
  4. windows 7 全屏游戏解决方案
  5. ae中心点重置工具_AE脚本:锚点中心点移动对齐脚本 Move Anchor Point 3
  6. 中震弹性计算_众值烈度、中震烈度、大震烈度及三水准二阶段
  7. #20175201 实验五 网络编程与安全
  8. QT配置OpenCV(二):成功
  9. Vim 经常使用快捷键及键盘图
  10. MAC的编译更严格一些
  11. php网站源码 一品资源网,一品资源网自用官网模板源码下载站(带手机模板)...
  12. python人工智能算法的方式_Python与人工智能
  13. 第一章概述-------第一节--1.6 计算机网络的性能
  14. PLC振荡电路——控制灯闪烁
  15. swift项目嵌入flutter的module混合开发(官方推荐模式)
  16. 多元线性回归分析spss结果解读_多元线性回归分析理论详解及SPSS结果分析
  17. Mac 如何强制使用 5G 频段 Wi-Fi
  18. 中国各大银行网址及服务电话
  19. 2020年技术研发岗薪酬排名
  20. mybatis Example 使用方法

热门文章

  1. linux下以M为单位显示文件大小
  2. 微记账软件-站立会议09
  3. TensorFlow框架做实时人脸识别小项目
  4. 快鲸写字楼物业管理软件收费标准如何?
  5. SEO站内外优化的着重点
  6. linux l7filter命令行,Linux下使用l7-filter过滤QQ、迅雷、电驴等
  7. Hive企业级性能优化(好文建议收藏)
  8. java基础篇-来源于微信公众号[java知音]
  9. C语言与程序设计免费下载,C语言程序设计课件WORD版
  10. CRMEB4.x版和pro版客服配置详解