博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu1978How many ways (记忆化搜索+DFS)
阅读量:7236 次
发布时间:2019-06-29

本文共 923 字,大约阅读时间需要 3 分钟。

Problem Description
这是一个简单的生存游戏,你控制一个机器人从一个棋盘的起始点(1,1)走到棋盘的终点(n,m)。游戏的规则描述如下:
1.机器人一开始在棋盘的起始点并有起始点所标有的能量。
2.机器人只能向右或者向下走,并且每走一步消耗一单位能量。
3.机器人不能在原地停留。
4.当机器人选择了一条可行路径后,当他走到这条路径的终点时,他将只有终点所标记的能量。
如上图,机器人一开始在(1,1)点,并拥有4单位能量,蓝色方块表示他所能到达的点,如果他在这次路径选择中选择的终点是(2,4)
点,当他到达(2,4)点时将拥有1单位的能量,并开始下一次路径选择,直到到达(6,6)点。
我们的问题是机器人有多少种方式从起点走到终点。这可能是一个很大的数,输出的结果对10000取模。
 

 

Input
第一行输入一个整数T,表示数据的组数。
对于每一组数据第一行输入两个整数n,m(1 <= n,m <= 100)。表示棋盘的大小。接下来输入n行,每行m个整数e(0 <= e < 20)。
 

 

Output
对于每一组数据输出方式总数对10000取模的结果.
 

 

Sample Input
1 6 6 4 5 6 6 4 3 2 2 3 1 7 2 1 1 4 6 2 7 5 8 4 3 9 5 7 6 6 2 1 5 3 1 1 3 7 2
 

 

Sample Output
3948
#include
int map[105][105],h,w,k;int dp[105][105];int DFS(int x,int y)//记忆化搜索{ int tx,ty; if(dp[y][x]>0)//这个当己经走过,直接反回有多少种走法 return dp[y][x]; if(y==h-1&&x==w-1) return 1; for(ty=0;ty<=map[y][x];ty++)//这两个循环是当前点能到达的范围,而把所有在范围内的点的走法加起来就是当前点的走法 for(tx=0;tx+ty<=map[y][x];tx++) if(tx+x

转载地址:http://otofm.baihongyu.com/

你可能感兴趣的文章
ubuntu 安装mysql, 以及全然又一次安装的方法
查看>>
startActivityForResult不返回结果
查看>>
[Hapi.js] Request Validation with Joi
查看>>
[转]highcharts图表入门之:如何让highcharts图表自适应浏览器窗体的大小或者页面大小...
查看>>
Ant搭建 一键生成APP技术 平台
查看>>
Mahout贝叶斯算法拓展篇3---分类无标签数据
查看>>
TCP/IP ---分层
查看>>
/dev/null简介
查看>>
uber优步提高成单率,轻松拿奖励!
查看>>
Redis源代码分析(三十五)--- redis.c服务端的实现分析(2)
查看>>
PV(访问量)、UV(独立访客)、IP(独立IP) (转)
查看>>
docker数据拷贝
查看>>
shiro realm 注解失败问题解决过程
查看>>
iOS 静态库,动态库与 Framework 浅析
查看>>
Java对ArrayList进行排序
查看>>
NumberFormat
查看>>
Spring WebSocket初探1 (Spring WebSocket入门教程)<转>
查看>>
每天一个linux命令(01):ifconfig命令
查看>>
vim打造简易C语言编辑器(在用2016.7.10)
查看>>
Response.Cookies 和 Request.Cookies
查看>>