hdu1978--How many ways(内存搜索)
How many ways
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 3007 Accepted Submission(s): 1759
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)。
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
3948
记忆化搜索,逆推着算。能够用到之前推出的结果。
opt[i][j] 计算从ij点到最后的方法
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int a[2][2] = { {1,0},{0,1} };
int opt[120][120] , Map[120][120] , n , m ;
void dp(int x,int y,int k)
{
int i , j ;
for(i = x ; i < n && i <= x+k ; i++)
{
for(j = y ; j < m && j <= y + ( k-(i-x) ) ; j++)
{
if( i == x && j == y ) continue ;
opt[x][y] = ( opt[x][y] + opt[i][j] ) % 10000 ;
}
}
}
int main()
{
int t , i , j ;
scanf("%d", &t);
while(t--)
{
scanf("%d %d", &n, &m);
for(i = 0 ; i < n ; i++)
for(j = 0 ; j < m ; j++)
scanf("%d", &Map[i][j]);
memset(opt,0,sizeof(opt));
opt[n-1][m-1] = 1 ;
for(i = n-1 ; i >= 0 ; i--)
for(j = m-1 ; j >= 0 ; j--)
{
if( i == n-1 && j == m-1 ) continue ;
dp(i,j,Map[i][j]);
}
printf("%d\n", opt[0][0]);
}
return 0;
}
hdu1978--How many ways(内存搜索)的更多相关文章
- Hdu1978 How many ways 2017-01-18 14:32 40人阅读 评论(0) 收藏
How many ways Time Limit : 3000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total ...
- hdu1978 How many ways
How many ways Problem Description 这是一个简单的生存游戏,你控制一个机器人从一个棋盘的起始点(1,1)走到棋盘的终点(n,m).游戏的规则描述如下: 机器人一开始在棋 ...
- Codeforces 39E What Has Dirichlet Got to Do with That? 游戏+内存搜索
主题链接:点击打开链接 意甲冠军: 特定 a一箱 b球 不变n (球和箱子都不尽相同,样的物品) 设 way = 把b个球放到a个箱子中的方法数, 若way >= n则游戏结束 有2个人玩游戏. ...
- UVA 707 - Robbery(内存搜索)
UVA 707 - Robbery 题目链接 题意:在一个w * h的图上.t个时刻,然后知道一些信息,每一个时刻没有小偷的矩阵位置,问哪些时刻能够唯一确定小偷位置.和确定小偷是否已经逃走,假设没逃走 ...
- HDU 4778 内存搜索&如压力
鉴于G宝石,B包.和S.S当代表凑齐每种颜色的宝石S我们可以成为哲学家的石头 每个软件包包含N宝石.分别c1,c2....... 然后他们轮流拿包.每个包可以得到一次.宝石出包放在地上. 假设你可以成 ...
- SDUT oj 3005 打怪升级(内存搜索)
当比赛一直纠缠骑2如何做一个非常大的数量,数组不开啊...后来他们发现自己很傻啊,该数不超过最大10什么,这个上限就是力量100什么.. .. 其它的就是记忆化搜索啊,还有就是加一点力量的瓶子当时就要 ...
- [ACM] poj 1088 滑雪 (内存搜索DFS)
滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 73409 Accepted: 27141 Description ...
- POJ 1579-Function Run Fun(内存搜索)
Function Run Fun Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 16503 Accepted: 8514 ...
- HDU1078 FatMouse and Cheese 【内存搜索】
FatMouse and Cheese Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
随机推荐
- linux cent os putty 问题彻底解决办法
出现乱码的根本原因: linux系统和putty使用的编码格式不一致. 解决办法: 1.首先使用命令查看linux当前使用的是什么编码格式 echo $LANG 返回的结果有如下几种情况:1)zh_C ...
- Chrome App远程控制
現在google app連上chrome就能遠控了出了幾年了, 能用觸控控制mouse https://chrome.google.com/webstore/detail/chrome-remote- ...
- Go的String转码包
https://github.com/qiniu/iconv https://github.com/djimenez/iconv-go 这是与go不相干的转码包:https://github.com/ ...
- C++ STL中Map的相关排序操作:按Key排序和按Value排序 - 编程小径 - 博客频道 - CSDN.NET
C++ STL中Map的相关排序操作:按Key排序和按Value排序 - 编程小径 - 博客频道 - CSDN.NET C++ STL中Map的相关排序操作:按Key排序和按Value排序 分类: C ...
- UVALive 5791 Candy's Candy 解题报告
比赛总结 题目 题意: 有f种口味的糖果,现在要把每颗糖果分到一些packs里面去.packs分两种: flavored pack:只有一种口味. variety pack:每种口味都有. 求满足下列 ...
- 【iOS】Swift字符串截取方法的改进
字符串截取方法是字符串处理中经常使用的基本方法.熟悉iOS的朋友都知道在基础类的NSString中有substringToIndex:,substringFromIndex:以及substringWi ...
- a++为啥不能用作左值
原地址:http://wy892648414.blog.163.com/blog/static/212212135201378496591/ 1)首先说左值和右值的定义: 变量和文字常量都有存储区,并 ...
- SICP 解题集 — SICP 解题集
SICP 解题集 — SICP 解题集 SICP 解题集¶ 这个文档的目标是成为中文化的.完整的<计算机程序的构造和解释>一书的解题集. 这个解题集的特色是: 对于每道习题,除了习题答案之 ...
- ffplay2 android 版正式公布
项目地址:https://github.com/DeYangLiu/AndroidPlayer/ 下载链接: 看点: 支持软键盘输入和历史记录.使用了EditText和内部存储. 这里考虑了历史记录的 ...
- Net处理html页面元素工具类(HtmlAgilityPack.dll)的使用
现在,在不少应用场合中都希望做到数据抓取,特别是基于网页部分的抓取.其实网页抓取的过程实际上是通过编程的方法,去抓取不同网站网页后,再进行 分析筛选的过程.比如,有的比较购物网站,会同时去抓取不同购物 ...