hdu 1978 How many ways 记忆化搜索+DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1978
思路很好想;
定义f[i][j]表示从点(i,j)出发到达(n,m)的方法数;
那么对于一切从(i,j)可以到达的点来说,f[i][j]+=∑f[k][p];其中(k.p)表示(i,j)可以到达的点,应该比较好理解的吧;
最后可以通过DFS 求解每一个点到达(n,m)的方案数,答案就为f[1][1];
注意的一点是:
在DFS过程中要保留答案状态,避免重复计算。即所谓的记忆化。
代码如下:
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
using namespace std;
#define MAX 110
#define MOD 10000
int n,m;
int map[MAX][MAX];
int ans;
int f[MAX][MAX];
int dfs(int x,int y)
{
if(x==n&&y==m) {f[n][m]=;return ;}
int power=map[x][y];
if(power==) return -;
for(int i=x;i<=x+power;i++)
for(int j=y;j<=y+power-(i-x);j++)
{ if(i==x&&j==y) continue;
if(i>n||i<||j>m||j<) continue;
if(f[i][j]==)
{
f[i][j]=dfs(i,j);
}
if(f[i][j]>) {f[x][y]+=f[i][j];f[x][y]=f[x][y]%MOD;}
if(f[i][j]==-) continue;
}
return f[x][y];
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
memset(f,,sizeof(f));
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
scanf("%d",&map[i][j]);
dfs(,);
cout<<f[][]<<endl;
}
return ;
}
hdu 1978 How many ways 记忆化搜索+DP的更多相关文章
- hdu 1978 How many ways 记忆化搜索 经典例题
How many ways Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tot ...
- hdu 1978 How many ways(记忆化搜索)
这是一个简单的生存游戏,你控制一个机器人从一个棋盘的起始点(1,1)走到棋盘的终点(n,m).游戏的规则描述如下:1.机器人一开始在棋盘的起始点并有起始点所标有的能量.2.机器人只能向右或者向下走,并 ...
- HDU 1078 FatMouse and Cheese 记忆化搜索DP
直接爆搜肯定超时,除非你加了某种凡人不能想出来的剪枝...555 因为老鼠的路径上的点满足是递增的,所以满足一定的拓补关系,可以利用动态规划求解 但是复杂的拓补关系无法简单的用循环实现,所以直接采取记 ...
- HDU 1078 FatMouse and Cheese (记忆化搜索+dp)
详见代码 #include <iostream> #include <cstdio> #include <cstdlib> #include <memory. ...
- 记忆化搜索(DP+DFS) URAL 1183 Brackets Sequence
题目传送门 /* 记忆化搜索(DP+DFS):dp[i][j] 表示第i到第j个字符,最少要加多少个括号 dp[x][x] = 1 一定要加一个括号:dp[x][y] = 0, x > y; 当 ...
- HDU 1176 免费馅饼(记忆化搜索)
免费馅饼 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- HDU 1428 漫步校园(记忆化搜索,BFS, DFS)
漫步校园 http://acm.hdu.edu.cn/showproblem.php?pid=1428 Problem Description LL最近沉迷于AC不能自拔,每天寝室.机房两点一线.由于 ...
- hdu 5389 Zero Escape(记忆化搜索)
Problem Description Zero Escape, is a visual novel adventure video game directed by Kotaro Uchikoshi ...
- hdu 4111 Alice and Bob 记忆化搜索 博弈论
Alice and Bob Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pi ...
随机推荐
- session的使用
一.什么是session? Session:在计算机中,尤其是在网络应用中,称为“会话控制”.Session 对象存储特定用户会话所需的属性及配置信息.这样,当用户在应用程序的 Web 页之间跳转时, ...
- oracle物理视图(转)
近期根据项目业务需要对oracle的物化视图有所接触,在网上搜寻关于这方面的资料,便于提高,整理内容如下: 物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的.普 ...
- python学习随笔(一)
我是为记录学习python的过程而开通了博客,希望以后自己能看看,也希望能分享一些给初学者. 话不多说,开始第一篇. (一)python解释器. python2和3,现在python2是主流,但是py ...
- Object-C开发常用宏定义
Object-C开发中宏会将经常用到的系统常量进行封装,方便使用: 1.获取通知中心 #define EYNotificationCenter(name, object, userInfo) [[NS ...
- Flash加载ini文件!
这个帖子里有解决方案: http://bbs.9ria.com/thread-405128-1-1.html
- 《Java Performance》笔记1——性能分析基础 2
4.内存使用率: 内存使用率的相关属性包括页面调度或页面交换.加锁.线程迁移中的让步式和抢占式上下文切换. 当应用运行所需的内存超过可用物理内存时,就会发生内存页面交换,系统在进行页面交换或使用虚拟内 ...
- 每天学点python-入门
最近就像学点脚本语言,大家都推荐python,准备每天学点python吧~ 1. python的执行过程 1)先将脚本编译成字节码 2)python虚拟机解释并运行字节码文件 2. python在赋值 ...
- Framework7初始化
/** * Framework7初始化 * 需引用jQuery */ /*---------------------------函数---------------------------*/ /** ...
- smartgit试用到期不用序列号怎么继续使用
方法1 1:进入C盘,搜索SmartGit,出现\AppData\Roaming\syntevo: 2:进入文件7.1和8,这个有不同的版本可以使用,上次里面的setting.xml文件 3:重新打开 ...
- 简单 fibonacci 函数
public static int fibonacci(int n){ if(n<=1) return 1; else { return fibonacci(n-1)+fibonac ...