题目描述

PIPI家里来了一只肥老鼠!!!
它的活动区域在一个n*n的方格矩阵中,其中每个方格上都一些奶酪,肥老鼠很懒,当它在一个方格吃完奶酪的时候,他最多往上下左右其中一个方向直走k步去找下一块奶酪。肥老鼠也很饿,当它在一个方格吃完奶酪之后,他的下一个目标方格的奶酪必须比当前的奶酪大。现在肥老鼠从(0,0)出发,请问: 肥老鼠最多能吃到多少奶酪?

输入

输入包含多组测试用例。
对于每组测试用例,第一行包含两个数字n和k(1<=n,k<=100)。
接下来输入包含一个 n*n的方格矩阵(不超过10000)。
以一对 -1 -1结束所有输入。

输出

对于每组测试用例,输出肥老鼠能够吃到的最多奶酪数。

样例输入

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

样例输出

37

一个方向最多走k步,显然要用动态规划

#include <stdio.h>
#include <iostream>
using namespace std;
int n,k;
int maze[105][105],dp[105][105];
int dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
int dfs(int x,int y){int sum=0;if(dp[x][y]) return dp[x][y];for(int i=0;i<4;i++)for(int j=1;j<=k;j++){int xx=x+dir[i][0]*j;int yy=y+dir[i][1]*j;if(xx>=0&&yy>=0&&xx<n&&yy<n&&maze[xx][yy]>maze[x][y]){sum=max(sum,dfs(xx,yy));}}
dp[x][y]=sum+maze[x][y];
return dp[x][y];
}int main(){int i,j;
while(scanf("%d %d",&n,&k)){if(n==-1||k==-1) break;for(i=0;i<n;i++)for(j=0;j<n;j++){scanf("%d",&maze[i][j]);dp[i][j]=0;}dfs(0,0);printf("%d\n",dp[0][0]);
}
return 0;
}

1093: 滑雪

题目描述
PIPI喜欢滑雪这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。PIPI想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。在上面的例子中,一条可滑行的滑坡为24-17-16-1。当然25-24-23-…-3-2-1更长。事实上,这是最长的一条。
输入
多组数据
输入的第一行表示区域的行数R和列数C(1 <= R,C <= 100)。
接下来R行,每行有C个整数,代表高度h,0<=h<=10000。
输出
输出最长区域的长度。
样例输入

5 5
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9

样例输出

25

#include <stdio.h>
#include <string.h>
int R,C;
int h[100][100],dp[100][100];
int dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
int getdp(int x,int y){int i;if(dp[x][y]!=-1) return dp[x][y];dp[x][y]=0;for(i=0;i<4;i++){int xx=x+dir[i][0];int yy=y+dir[i][1];if(xx>=0&&xx<R&&yy>=0&&yy<C&&h[xx][yy]<h[x][y])dp[x][y]=getdp(xx,yy)+1>dp[x][y]?getdp(xx,yy)+1:dp[x][y];}
return dp[x][y];
}
int main(){int i,j,ans;while(scanf("%d %d",&R,&C)!=EOF){memset(dp,-1,sizeof(dp));for(i=0;i<R;i++)for(j=0;j<C;j++)scanf("%d",&h[i][j]);ans=0;for(i=0;i<R;i++)for(j=0;j<C;j++){getdp(i,j);ans=ans>dp[i][j]?ans:dp[i][j];}printf("%d\n",ans+1);
}
return 0;
}

记忆化dfs(爱吃奶酪的肥老鼠)相关推荐

  1. 深度优先搜索之记忆化dfs

    文章目录 前言 朴素dfs的求解思路 记忆化dfs的求解思路 将整数按权重排序 题目描述 解题思路 朴素dfs 记忆化dfs 小结 矩阵中的最长递增路径 题目描述 解题思路 朴素dfs 记忆化dfs ...

  2. 胖老鼠和奶酪(记忆化dfs)

    问题描述 FatMouse在一个城市中存储了一些奶酪.可以将城市视为尺寸为n的正方形网格:每个网格位置都标记为(p,q),其中0 <= p <n和0 <= q <n.在每个网格 ...

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

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

  4. P1983-车站分级【图论,记忆化dfs,构图】

    正题 题目链接:https://www.luogu.org/problemnew/show/P1983 题目大意 一个辆车会一个一个值xxx,如果等级大于等于xxx的车站都会停靠(包括起点和终点).给 ...

  5. 力扣 1553. 吃掉 N 个橘子的最少天数 记忆化DFS|记忆化BFS|剪枝

    吃掉 N 个橘子的最少天数 厨房里总共有 n 个橘子,你决定每一天选择如下方式之一吃这些橘子: 吃掉一个橘子. 如果剩余橘子数 n 能被 2 整除,那么你可以吃掉 n/2 个橘子. 如果剩余橘子数 n ...

  6. jzoj6343-[NOIP2019模拟2019.9.7]Medium Counting【记忆化dfs,dp】

    正题 题目大意 给出nnn个字符串SiS_iSi​,然后有些???号可以进行随便填字母. 然后要求Si<Si+1S_i<S_{i+1}Si​<Si+1​的情况下求方案数. 解题思路 ...

  7. 洛谷 P1434 [SHOI2002] 滑雪(优先队列+dp / 记忆化搜索)

    P1434 [SHOI2002] 滑雪https://www.luogu.com.cn/problem/solution/P1434 优先队列+dp 本题状态转移方程一目了然 为了保证状态间无后效性, ...

  8. vijos 1011 清帝之惑之顺治 (记忆化搜索)

    背景 顺治帝福临,是清朝入关后的第一位皇帝.他是皇太极的第九子,生于崇德三年(1638)崇德八年八月二ten+six日在沈阳即位,改元顺治,在位18年.卒于顺治十八年(1661),终24岁. 顺治即位 ...

  9. 记忆化搜索(Memory Search)

    Question 输入n,符合要求的序列为:第一个数为n,第二个数不大于n,从第三个数起小于前两个数的差的绝对值,后面以此类推.求有多少种序列?答案取模10000(数据:n最大为1000) Sampl ...

最新文章

  1. 如何在CPU上优化GEMM(上)
  2. 一种可以穿透还原卡和还原软件的代码
  3. 搜索推荐中的召回匹配模型综述(一):传统方法
  4. Spark RDD使用详解1--RDD原理
  5. java画笔覆盖在界面_Java学习笔记:swing画笔工具Graphics,刷新页面,键盘事件,随机数等【诗书画唱】...
  6. AntDesign Pro + .NET Core 实现基于JWT的登录认证
  7. 用html5做一个介绍自己家乡的页面_厚溥资讯 | HTML5的小知识点小集合(上)
  8. Kafka: Producer (0.10.0.0)
  9. JavaScript--Array; Array.prototype
  10. 80个非常酷的WordPress 杂志主题模板
  11. 关联——Apriori算法详解
  12. 100多套毕业论文答辩PPT模板百度网盘链接
  13. Kotlin:关于Sealed密封类
  14. hive建表报错FAILED: ParseException line 2:0 Failed to recognize predicate ‘date‘. Failed rule: ‘identifi
  15. 女生适合学UI设计吗
  16. 修正获取BSSID和SSID的代码
  17. 概率论与数理统计笔记 - 古典概型;条件概率;独立性
  18. SOW/Statement of Work 工作说明书
  19. KVM 介绍 虚拟化简史
  20. 武汉理工大学计算机网,武汉理工大学计算机基础综合实验

热门文章

  1. Python Matplotlib 绘制表格
  2. CPU的运行机制——————ARM微控制器及嵌入式系统(清华大学慕课记录)
  3. 【Java面试30天掌握】基础篇Day02(数据类型/变量、break、contiune、return三者的区别?)
  4. 网课搜题接口之公众号搜题系统
  5. 雷军慌了!小米这款透明手机,没比魅族16吃香?
  6. GPS实时跟踪程序模拟
  7. 全自动领取天猫双11优惠券教程!
  8. 高防IP是不是一定能防住DDOS攻击
  9. 面包房算法-时钟和分布式系统中事件的顺序
  10. python面向对象编程之类和对象的概念