hdu1978 简单记忆化搜索
题意:
How many ways
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2672 Accepted Submission(s): 1566
1.机器人一开始在棋盘的起始点并有起始点所标有的能量。
2.机器人只能向右或者向下走,并且每走一步消耗一单位能量。
3.机器人不能在原地停留。
4.当机器人选择了一条可行路径后,当他走到这条路径的终点时,他将只有终点所标记的能量。
如上图,机器人一开始在(1,1)点,并拥有4单位能量,蓝色方块表示他所能到达的点,如果他在这次路径选择中选择的终点是(2,4)
点,当他到达(2,4)点时将拥有1单位的能量,并开始下一次路径选择,直到到达(6,6)点。
我们的问题是机器人有多少种方式从起点走到终点。这可能是一个很大的数,输出的结果对10000取模。
对于每一组数据第一行输入两个整数n,m(1 <= n,m <= 100)。表示棋盘的大小。接下来输入n行,每行m个整数e(0 <= e < 20)。
思路:
直接记忆化搜索就行了,水题没啥好说的,还有就是提示一点,不是钱全花没了才可以停,中途也可以直接停下来去走另一条路,别的没啥,既然是记忆化搜索那么也应该可以用dp去写,因为如果不考虑实现的复杂度的话,我个人认为记忆化搜索本身就是dp,给出记忆化搜索的代码吧。
#include<stdio.h> #include<string.h> int mark[110][110]; int hash[110][110]; int map[110][110]; int n ,m;int abss(int x) {return x > 0 ? x : -x; }int DFS(int x ,int y) {if(mark[x][y]) return hash[x][y];if(x == n && y == m) return 1;int sum = 0;for(int i = x ;i <= x + map[x][y] && i <= n;i ++)for(int j = y ;j <= y + map[x][y] && j <= m ;j ++){int dis = abss(i - x) + abss(j - y);if(dis > map[x][y] || dis == 0) continue;sum += (DFS(i ,j) % 10000);}mark[x][y] = 1;hash[x][y] = sum % 10000;return sum; }int main () {int t ,i ,j;scanf("%d" ,&t);while(t--){scanf("%d %d" ,&n ,&m);for(i = 1 ;i <= n ;i ++)for(j = 1 ;j <= m ;j ++)scanf("%d" ,&map[i][j]);memset(mark ,0 ,sizeof(mark));printf("%d\n" ,DFS(1 ,1) % 10000);}return 0; }
hdu1978 简单记忆化搜索相关推荐
- hdu2067 简单dp或者记忆化搜索
题意: 小兔的棋盘 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- HDU1978 记忆化搜索
How many ways Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) To ...
- UVA437 巴比伦塔 The Tower of Babylon(矩形嵌套进阶版、DAG上DP、记忆化搜索)
整理的算法模板合集: ACM模板 本题和基础的矩形覆盖差不多,只不过变成了三维的长方形. 因为每次转移的时候只有顶面的x和y会影响决策的进行,所以我们只需要用一个二元组(a,b)(a, b)(a,b) ...
- hdu 4722(记忆化搜索)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4722 思路:简单的记忆化搜索,留意一下A==0时的情况就可以了. 1 #include<iost ...
- Codeforces Round #336 (Div. 2) D. Zuma 记忆化搜索
D. Zuma 题目连接: http://www.codeforces.com/contest/608/problem/D Description Genos recently installed t ...
- PAT甲级1079 Total Sales of Supply Chain:[C++题解] 树、结点到根结点的距离、树形dp、记忆化搜索
文章目录 题目分析 题目链接 题目分析 来源:acwing 分析:下图是对样例的模拟图示,题目就是统计叶子结点卖出去的钱数.根据下图,我们第一步是建树,第二步是统计叶子结点到根结点的距离,然后才能知道 ...
- 数据结构-记忆化搜索讲解
算法:记忆化搜索算法 一:简述 记忆化搜索实际上是递归来实现的,但是递归的过程中有许多的结果是被反复计算的,这样会大大降低算法的执行效率. 而记忆化搜索是在递归的过程中,将已经计算出来的结果保存起来, ...
- P1464 Function(递归式的记忆化搜索)
传送门 题目描述 对于一个递归函数w(a,b,c)w(a,b,c)w(a,b,c) 如果a≤0a≤0orb≤0b≤0orc≤0c≤0a \le 0a≤0 or b \le 0b≤0 or c \le ...
- hdu1501Zipper(记忆化搜索)
http://acm.hdu.edu.cn/showproblem.php?pid=1501 搜了下记忆化搜索是嘛 然后就看到这个题了 不过一不小心看到代码了 代码又那么短 一不小心给记住了 然后看了 ...
最新文章
- k8s如何设置虚拟内存_绝地求生内存优化设置教程(建议收藏)
- P2P的原理和常见的实现方式
- 前端学习(2561):页面更新
- 读懂 Redis 源码,我总结了这7点心得
- 夯实数字化转型算能基石 构建洛阳银行核心云
- java根据field名获取变量_Java反射有多强?这5大神奇功能,你需要了解!
- c语言中输入大数,如何使用C语言实现输入10个数按从大到小的顺序排序输出
- 在 Mac 上如何放大或缩小?
- PPC小问题,持续更新中...
- 基于深度学习的恶意代码分类(一)
- 推荐系统常用推荐系统算法(协同过滤算法等)-人工智能AI
- 单片机/嵌入式体系介绍
- bootbox.js文档中文版
- 苹果支付验单java
- Word不能编辑文档怎么办,文档修改了不能保存怎么办
- c语言预处理命令math,C语言之预处理命令
- jquery(文本框添加符号)
- vcs+verdi版本 七夕小心心
- 如何将excel表格导入word_word办公技巧:如何让Excel与Word文档数据同步
- 对抗神经网络之对抗卷积神经网络[2]