首页 > 试题广场 >

简单变向

[编程题]简单变向
  • 热度指数:2321 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
牛牛准备在一个3行n列的跑道上跑步。一开始牛牛位于(1,1)。

当牛牛位于第i行第j列时,他可以的下一步最多可能有三种选择:

1. 跑到第i行第j+1列
2. 跑到第i-1行第j+1列(如果i=1则不可以这么跑)。
3. 跑到第i+1行第j+1列(如果i=3则不可以这么跑)。

跑道上有一些格子设置了路障(一个格子可能有多个路障),牛牛不能跑到路障上。现在牛牛想知道,从(1,1)到(3,n)有多少条不同的路径?

为了防止答案过大,答案对1e9+7取模。
示例1

输入

4,1,[1],[2]

输出

2

说明

在第一行第二列的位置有一个障碍
牛牛有两种跑法:
1.  (1,1)->(2,2)->(2,3)->(3,4)
2.  (1,1)->(2,2)->(3,3)->(3,4)

备注:
,数据保证(1,1)和(3,n)上没有路障。
第一个参数n代表列数
第二个参数m代表路障个数
第三个参数和第四个参数x, y都包含m个元素,分别代表路障的行坐标和列坐标。
同一个格子可能有多个路障。
头像 xqxls
发表于 2021-08-13 14:27:02
题意整理 牛牛在一个3行n列的跑道上跑步。 牛牛的下一步只能在原来的那一行,或者由相邻行跳转过来(不能跨行或者越界)。 求牛牛从(1,1)到(3,n)有多少条不同的路径可走。 方法一(记忆化递归) 1.解题思路 递归终止条件:起点第1行第1列的位置肯定是可达的。 递归如何推进:总共有1,2,3 展开全文
头像 QSheng
发表于 2021-08-05 16:22:23
解题思路(参考爬楼梯的例子): 1. 障碍物记录,用字典,方便查找 2. 障碍物在同一列超过3个,就返回0 3. 动态转移方程 dp[0][i] = 0 if "有障碍" else int((dp[0][i-1] + dp[1][i-1]) % b 展开全文
头像 SandMonth
发表于 2021-09-14 21:02:33
简单变向 牛牛准备在一个3行n列的跑道上跑步。一开始牛牛位于(1,1)。当牛牛位于第i行第j列时,他可以的下一步最多可能有三种选择: 跑到第i行第j+1列 跑到第i-1行第j+1列(如果i=1则不可以这么跑)。 跑到第i+1行第j+1列(如果i=3则不可以这么跑)。跑道上有一些格子设置了路障(一 展开全文
头像 球球了给孩子一个offer吧
发表于 2021-08-14 14:11:19
题目:矩阵大小为3xn,以(1,1)为起点可以向右走,右上对角线走,右下对角线走(不能出界),有些位置设置了路障,走不了,求出从(1,1)到(3,n)的路径数量 方法一:记忆化递归可以用自顶向下的递归解决初始化路障数组,遇到路障直接返回0,为了避免重复计算,初始化记忆数组每个位置为0,用记忆数组记录 展开全文
头像 Peterliang
发表于 2021-10-10 23:25:30
NC554 题解 | #简单变向# 题意分析 给出一个3xn的矩阵,同时给出若干个障碍物的位置,不能移动到障碍物。当牛牛位于第i行第j列时,他可以的下一步最多可能有三种选择: 跑到第i行第j+1列 跑到第i-1行第j+1列(如果i=1则不可以这么跑) 跑到第i+1行第j+1列(如果i=3则不可以 展开全文
头像 摸鱼学大师
发表于 2021-08-11 12:54:41
思路: 题目的主要信息: 的跑道,要从到 每次下一步列号必须加1,行号可以是本行或者邻近的一行,比如1行可以到1行或者2行,2行可以到1行或者2行或者3行,3行可以到2行或者3行 数组x,y分别是路障的行列坐标,有路障的位置不能经过 问路径种类有多少,取模1e+7 方法一:动态规划具体做法:用辅 展开全文