java 跳格子_HDU 1208 跳格子题(很经典,可以有很多变形)
题目链接:
Pascal's Travels
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 2795 Accepted Submission(s): 1298
Problem Description
An n x n game board is populated with integers, one nonnegative integer per square. The goal is to travel along any legitimate path from the upper left corner to the lower right corner of the board. The integer in any one square dictates how large a step away from that location must be. If the step size would advance travel off the game board, then a step in that particular direction is forbidden. All steps must be either to the right or toward the bottom. Note that a 0 is a dead end which prevents any further progress.
Consider the 4 x 4 board shown in Figure 1, where the solid circle identifies the start position and the dashed circle identifies the target. Figure 2 shows the three paths from the start to the target, with the irrelevant numbers in each removed.
Figure 1
Figure 2
Input
The input contains data for one to thirty boards, followed by a final line containing only the integer -1. The data for a board starts with a line containing a single positive integer n, 4 <= n <= 34, which is the number of rows in this board. This is followed by n rows of data. Each row contains n single digits, 0-9, with no spaces between them.
Output
The output consists of one line for each board, containing a single integer, which is the number of paths from the upper left corner to the lower right corner. There will be fewer than 2^63 paths for any board.
Sample Input
4
2331
1213
1231
3110
4
3332
1213
1232
2120
5
11101
01111
11111
11101
11101
-1
Sample Output
3
0
7
Hint
Hint
Brute force methods examining every path will likely exceed the allotted time limit.
64-bit integer values are available as "__int64" values using the Visual C/C++ or "long long" values
using GNU C/C++ or "int64" values using Free Pascal compilers.
Source
分析;
看到一句话:
所谓动态规划,就是每一个阶段你要做出一个决策,从最开始的决策到结束的决策的集合叫做一个策略,而各个阶段决策的多样性直接导致了策略的多样性,而我们一般求得的不是最有策略结束最大最小花费策略,每一个阶段的决策在这种有目的的作用下都与上一个阶段的决策相关,我们用记录这个阶段的一个东西(通常是动态数组)来记录这个状态符合我们需要的策略的决策
唉,还是不能很好的理解dp思想
本题分析;
要 求左上角到右下角的方法数
每次只能往下或者往右跳,跳的格子数必须等于现在站的格子的权值(不能少跳,比如你站的格子中权值是3,那么你在不超出边界的条件下你一定要跳3个格子),这样一来,有的格子可能跳不到,而有的格子可能有多种到达的方式
dp[i][j] 表示到达i,j的方法数目
注意:
1.初始化问题:dp初始化为0,dp[0][0]=1
2.状态转移方程:
dp[i][j+a[i][j]]+=dp[i][j];
dp[i+a[i][j]][j]+=dp[i][j];
不超边界的前提下(j+a[i][j]
3.long long 类型(注意题目中拿到2的63次方)
代码如下:
#include
using namespace std;
#define max_v 40
long long dp[max_v][max_v];//dp[i][j] 表示到达i行j列有多少种走法
long long a[max_v][max_v];
char s[max_v];
int main()
{
int n;
while(~scanf("%d",&n))
{
if(n==-1)
break;
getchar();
for(int i=0;i
{
scanf("%s",s);
for(int j=0;j
{
a[i][j]=s[j]-'0';
}
}
memset(dp,0,sizeof(dp));
dp[0][0]=1;
for(int i=0;i
{
for(int j=0;j
{
if(a[i][j]==0)//防止死循环
continue;
if(j+a[i][j]
{
dp[i][j+a[i][j]]+=dp[i][j];
}
if(i+a[i][j]
{
dp[i+a[i][j]][j]+=dp[i][j];
}
}
}
printf("%lld\n",dp[n-1][n-1]);
}
return 0;
}
java 跳格子_HDU 1208 跳格子题(很经典,可以有很多变形)相关推荐
- 【线性DP】跳格子问题 + 光签题(取石子游戏)
Part1跳格子Part\ 1\ 跳格子Part 1 跳格子 LDUOJ 测试平台传送门 问题描述: NikolaNikolaNikola 现在已经成为一个游戏里的重要人物.这个游戏是由一行 NNN ...
- java孙膑与庞涓_一个很难的数学问题(智力140以下勿进)
旧版Java程序设计Page97 3.12题
庞涓...
一个很难的数学问题(智力140以下勿进) 旧版Java程序设计Page97 3.12题 庞涓 2016-08-23 0 0 0 暂无评分 其他 1 积分下载 如何获取积分? 一个很难的数学问题(智力1 ...
- java唱哪首歌好听_盘点四首戳爷最好听的歌曲,每一首都很经典,你最喜欢哪一首?...
第一首歌曲的是戳爷第一张专辑中的一首非常有很大意义的歌曲,这首歌曲就是戳爷演唱的一首为LGBTQ平权的歌曲,这首歌曲的名字就是<heaven>,小编也是非常喜欢这是歌曲的啊,并且,很多人也 ...
- Java基础编程练习50题(转载)
JAVA基础编程练习50题 本文对50道经典的java程序题进行详细解说,对于初学者可以跳过一些逻辑性太强的题目,比如第一题用到了方法的递归,初学者可能不理解,最好先看那些有if.for.while可 ...
- oracle对sga统计信息不对,关于oracle sga设置的总结,很经典--转
关于oracle sga设置的总结,很经典--转 说明: 本总结不针对特例,仅对服务器只存在OS + ORACLE 为例,如果存在其他应用请酌情考虑.写这个也是因为近来这种重复性的问题发生的太多所导致 ...
- 2015年 第06届 蓝桥杯 Java B组 决赛真题详解及小结
蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...
- 2016年 第07届 蓝桥杯 Java B组 决赛真题详解及小结
蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...
- 2017年 第08届 蓝桥杯 Java B组 决赛真题详解及小结
蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 ...
- 2018年 第09届 蓝桥杯 Java B组 决赛真题详解及小结
蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...
最新文章
- 【java】兴唐第二十三节课(暑期第一节TreeSet)
- mrp软件Java模拟器下载_mrp模拟器
- Linux集群和自动化维1.5.1 服务器物理硬件的优化
- 高手勿入:不肝不氪,又能有参与证明的13个比赛活动来了
- redis服务器防止入侵,加ip,密码限制
- [vue] 怎么修改vue打包后生成文件路径?
- mysql生成十万数据脚本
- idea2020.01的git下的Local Changes消失的问题
- 怎么解决VMware“该虚拟机似乎正在使用中”问题
- 换IP工具派克斯和PPTP的区别
- 微信android打不开pdf,安卓系统下微信小程序打开pdf文件 没反应
- java对接支付宝网页h5支付
- Vue3 Fragment(碎片化节点)
- (三)Linux vi 文本编辑器,用户管理,组管理,Sudo命令,时间管理
- 了解mybatis源码手写mybatis
- [导入]提高英语口语水平【网上资料整合】
- ROS-talker,listener
- 【STM32H7】第2章 ThreadX FileX文件系统介绍
- 一维卷积Conv1D
- 极智AI | 谈谈几种量化策略:MinMax、KLD、ADMM、EQ