题目链接:

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 跳格子题(很经典,可以有很多变形)相关推荐

  1. 【线性DP】跳格子问题 + 光签题(取石子游戏)

    Part1跳格子Part\ 1\ 跳格子Part 1 跳格子 LDUOJ 测试平台传送门 问题描述: NikolaNikolaNikola 现在已经成为一个游戏里的重要人物.这个游戏是由一行 NNN ...

  2. java孙膑与庞涓_一个很难的数学问题(智力140以下勿进) 旧版Java程序设计Page97 3.12题 庞涓...

    一个很难的数学问题(智力140以下勿进) 旧版Java程序设计Page97 3.12题 庞涓 2016-08-23 0 0 0 暂无评分 其他 1 积分下载 如何获取积分? 一个很难的数学问题(智力1 ...

  3. java唱哪首歌好听_盘点四首戳爷最好听的歌曲,每一首都很经典,你最喜欢哪一首?...

    第一首歌曲的是戳爷第一张专辑中的一首非常有很大意义的歌曲,这首歌曲就是戳爷演唱的一首为LGBTQ平权的歌曲,这首歌曲的名字就是<heaven>,小编也是非常喜欢这是歌曲的啊,并且,很多人也 ...

  4. Java基础编程练习50题(转载)

    JAVA基础编程练习50题 本文对50道经典的java程序题进行详细解说,对于初学者可以跳过一些逻辑性太强的题目,比如第一题用到了方法的递归,初学者可能不理解,最好先看那些有if.for.while可 ...

  5. oracle对sga统计信息不对,关于oracle sga设置的总结,很经典--转

    关于oracle sga设置的总结,很经典--转 说明: 本总结不针对特例,仅对服务器只存在OS + ORACLE 为例,如果存在其他应用请酌情考虑.写这个也是因为近来这种重复性的问题发生的太多所导致 ...

  6. 2015年 第06届 蓝桥杯 Java B组 决赛真题详解及小结

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

  7. 2016年 第07届 蓝桥杯 Java B组 决赛真题详解及小结

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

  8. 2017年 第08届 蓝桥杯 Java B组 决赛真题详解及小结

    ​​​​​蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 ...

  9. 2018年 第09届 蓝桥杯 Java B组 决赛真题详解及小结

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

最新文章

  1. 【java】兴唐第二十三节课(暑期第一节TreeSet)
  2. mrp软件Java模拟器下载_mrp模拟器
  3. Linux集群和自动化维1.5.1 服务器物理硬件的优化
  4. 高手勿入:不肝不氪,又能有参与证明的13个比赛活动来了
  5. redis服务器防止入侵,加ip,密码限制
  6. [vue] 怎么修改vue打包后生成文件路径?
  7. mysql生成十万数据脚本
  8. idea2020.01的git下的Local Changes消失的问题
  9. 怎么解决VMware“该虚拟机似乎正在使用中”问题
  10. 换IP工具派克斯和PPTP的区别
  11. 微信android打不开pdf,安卓系统下微信小程序打开pdf文件 没反应
  12. java对接支付宝网页h5支付
  13. Vue3 Fragment(碎片化节点)
  14. (三)Linux vi 文本编辑器,用户管理,组管理,Sudo命令,时间管理
  15. 了解mybatis源码手写mybatis
  16. [导入]提高英语口语水平【网上资料整合】
  17. ROS-talker,listener
  18. 【STM32H7】第2章 ThreadX FileX文件系统介绍
  19. 一维卷积Conv1D
  20. 极智AI | 谈谈几种量化策略:MinMax、KLD、ADMM、EQ

热门文章

  1. 硬盘引导二合一安装黑群晖
  2. 静态/动态博客Blog框架简介
  3. QT学习-----按钮弹起效果的实现
  4. Hexo个人博客NexT主题添加Local Search本地搜索
  5. 在SecureCRT使用sz与rz命令上传、下载文件命令介绍
  6. 【逗老师带你考IE】如何快速通过HCIE考试
  7. 新手用cdr如何设计名片_新名片设计
  8. 酷睿计算机系统吗,酷睿i3和i5的区别是什么?电脑处理器i3和i5的区别介绍
  9. python中的阶乘,python中阶乘怎么表示
  10. 最小二乘法(Ordinary Least Squares)