hdu 1978 How many ways(dp)

点,当他到达(2,4)点时将拥有1单位的能量,并开始下一次路径选择,直到到达(6,6)点。 我们的问题是机器人有多少种方式从起点走到终点。这可能是一个很大的数,输出的结果对10000取模。
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
方法一:当前的这个点可以到达其他点的方法数(直接4重循环)
- #pragma comment(linker, "/STACK:1024000000,1024000000")
- #include<iostream>
- #include<cstdio>
- #include<cstring>
- #include<cmath>
- #include<math.h>
- #include<algorithm>
- #include<queue>
- #include<set>
- #include<bitset>
- #include<map>
- #include<vector>
- #include<stdlib.h>
- using namespace std;
- #define ll long long
- #define eps 1e-10
- #define MOD 10000
- #define inf 1e12
- #define N 106
- int n,m;
- int mp[N][N];
- int dp[N][N];
- int main()
- {
- int t;
- scanf("%d",&t);
- while(t--){
- scanf("%d%d",&n,&m);
- for(int i=;i<=n;i++){
- for(int j=;j<=m;j++){
- scanf("%d",&mp[i][j]);
- }
- }
- memset(dp,,sizeof(dp));
- dp[][]=;
- for(int i=;i<=n;i++){
- for(int j=;j<=m;j++){
- for(int k=i;(k<=n) && (k<=mp[i][j]+i);k++){
- for(int w=j;(w<=m) && (w<=mp[i][j]+i+j-k);w++){
- if((k==i) && (w==j))continue;
- dp[k][w]+=dp[i][j];
- dp[k][w]%=MOD;
- }
- }
- }
- }
- printf("%d\n",dp[n][m]%MOD);
- }
- return ;
- }
方法二:记忆化dp,标记dp[n][m]=1,然后从前往后记忆化dp,dfs
- #pragma comment(linker, "/STACK:1024000000,1024000000")
- #include<iostream>
- #include<cstdio>
- #include<cstring>
- #include<cmath>
- #include<math.h>
- #include<algorithm>
- #include<queue>
- #include<set>
- #include<bitset>
- #include<map>
- #include<vector>
- #include<stdlib.h>
- using namespace std;
- #define ll long long
- #define eps 1e-10
- #define MOD 10000
- #define N 106
- #define inf 1e12
- int n,m;
- int mp[N][N];
- int dp[N][N];
- bool judge(int x,int y){
- if(x< || x>n || y< || y>m) return false;
- return true;
- }
- int dfs(int x,int y){
- if(dp[x][y]>=) return dp[x][y];
- dp[x][y]=;
- for(int i=;i<=mp[x][y];i++){
- for(int j=;j<=mp[x][y]-i;j++){
- if(judge(x+i,y+j)){
- dp[x][y]=(dp[x][y]+dfs(x+i,y+j))%MOD;
- }
- }
- }
- return dp[x][y];
- }
- int main()
- {
- int t;
- scanf("%d",&t);
- while(t--){
- scanf("%d%d",&n,&m);
- for(int i=;i<=n;i++){
- for(int j=;j<=m;j++){
- scanf("%d",&mp[i][j]);
- }
- }
- memset(dp,-,sizeof(dp));
- dp[n][m]=;
- printf("%d\n",dfs(,));
- }
- return ;
- }
hdu 1978 How many ways(dp)的更多相关文章
- HDU 1978 How many ways(动态规划)
How many ways http://acm.hdu.edu.cn/showproblem.php?pid=1978 Problem Description 这是一个简单的生存游戏,你控制一个机器 ...
- HDU 2639 Bone Collector II (dp)
题目链接 Problem Description The title of this problem is familiar,isn't it?yeah,if you had took part in ...
- HDU 1864 最大报销额(DP)
题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=1864 题目: 最大报销额 Time Limit: 1000/1000 MS (Java/Others) ...
- HDU 4562 守护雅典娜(dp)
守护雅典娜 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submi ...
- HDU - 6199 gems gems gems (DP)
有n(2e4)个宝石两个人轮流从左侧取宝石,Alice先手,首轮取1个或2个宝石,如果上一轮取了k个宝石,则这一轮只能取k或k+1个宝石.一旦不能再取宝石就结束.双方都希望自己拿到的宝石数比对方尽可能 ...
- HDU 1978 How many ways(经典记忆化搜索)
S - How many ways Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u S ...
- HDU - 6357 Hills And Valleys(DP)
http://acm.hdu.edu.cn/showproblem.php?pid=6357 题意 给一个数值范围为0-9的a数组,可以选择翻转一个区间,问非严格最长上升子序列,以及翻转的区间. 分析 ...
- 2014多校第四场1005 || HDU 4901 The Romantic Hero (DP)
题目链接 题意 :给你一个数列,让你从中挑选一些数组成集合S,挑另外一些数组成集合T,要求是S中的每一个数在原序列中的下标要小于T中每一个数在原序列中下标.S中所有数按位异或后的值要与T中所有的数按位 ...
- hdu 5623 KK's Number(dp)
问题描述 我们可爱的KK有一个有趣的数学游戏:这个游戏需要两个人,有N\left(1\leq N\leq 5*{10}^{4} \right)N(1≤N≤5∗104)个数,每次KK都会先拿数.每 ...
随机推荐
- codecomb 2090【最小乘积路】
题目描述 给定n个点的带权有向图,求从1到n的路径中边权之积最小的简单路径. 输入格式 第一行读入两个整数n,m,表示共n个点m条边. 接下来m行,每行三个正整数x,y,z,表示点x到点y有一条边权为 ...
- House Robber 解答
Question You are a professional robber planning to rob houses along a street. Each house has a certa ...
- [置顶] ID3算法的python实现
这篇文章的内容接着http://blog.csdn.net/xueyunf/article/details/9214727的内容,所有还有部分函数在http://blog.csdn.net/xueyu ...
- Echarts动态数据显示
自己慢慢摸索出来的,留着以后可能会用到 一.先引入jquery,再引入echarts.js 二.配置容器 三.配置路径和数据选项等 <script type="text/javascr ...
- Test 2.14
i am back 写博客是个好习惯啊,要坚持下去才行 这些天的日子实在堕落
- flex与js相互调用
1.flex调用js方法 调用方法例如:ExternalInterface.call("UploadComplete",oldName,uidName,_dir+"/&q ...
- <转>maven发布第三方jar的一些问题
在创建maven中私有仓库过程中,需要发布一些第三方jar到nexus仓库,使用命令的是 deploy:deploy-file 有许多参数,具体可查看 http://maven.apache.org/ ...
- iOS中通知的添加和移除
我们都知道viewWillAppear:方法是在控制器的view将要显示的时候调用的,而viewWillDisappear:方法是在控制器的view将要隐藏的时候调用.很多时候我们根据自身需要将相关代 ...
- operator 类型转换符
参考脚本之家的这篇博客 http://www.jb51.net/article/41333.htm 类型转换操作符(type conversion operator)是一种特殊的类成员函数,它定义 ...
- IE的documentMode属性
参看下面链接:<IE的documentModeshuxing>