三角走题解

目录

题目概述

题目背景:

题目描述:

输入格式:

输出格式:

样例输入:

样例输出:

提示说明:

解析:

方法一:28 points

方法二:100 points


题目概述

题目背景:

疫情期间,小明要去超是买零食,可他不希望遇到疫情……

题目描述:

在一个边长为n的网格上,小明从(00)出发,到(n−1, n−1)买菜,小明每次可以沿着一条边走一步。可是疫情很严重,在(00)和(n−1, n−1)有一条安全线,安全线的左上部为危险区域,不可以走。例如下图中,蓝色为不可取路线,而绿色为可取路线。求小明有多少条到菜场的最短路径。

输入格式:

共一行,一个正整数n

输出格式:

输出小明到菜场的最短路条数。

样例输入:

4

样例输出:

14

提示说明:

数据范围:

样例

N

分值(个)

1-2

20

5

3-5

5000

6

6-8

100000

10

9-10

259571

21

注:此题目为洛谷私人题库,不得抄袭。

若需要提交代码,请到

U374955 三角走 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)


解析:

方法一:28 points

n2的时间来一个一个标数

程序自然很简单,这里不进行详细说明


方法二:100 points

我们先来分析一下这个题目。

易得到:正确走法=总走法犯罪走法。

而总走法用C2nn就可以得到了!

俗话说的好,人生总是在后半生犯罪,但如果反转一下,就成了一个不错的人生。

我们随便找一个非法的走法,并将它已对角线反转(除最后一步)。如下图:

绿色:原来路线   蓝色:反转路线  紫色:最后一步

然后,把最后一步接在反转后的最后一步的后面:

此时,这个犯法的到(n – 1,n – 1)的路径被转化为了一个随意到(n, n – 2)的路径了!

显然,每一个到(n, n – 2)均可以转化为一个非法路径且包含了所有,所以犯法路径 =到(n, n – 2)的任意路径,即为C 2nn - 1C2nn + 1

所以,合法总路径的个数=C2nn - C 2nn – 1

然后,我们去简化这个式子,并得出一个递推式:        

H_i=H_{i-1}*\frac{4n - 2}{2n + 1}                      

然后,最重要的代码实现:

注:无脑抄题解必挂!这里有两处错误!

最终算法时间复杂度:O(n)

考虑到数值较大,我们不做跟加大的数据。

接着,我们来深入探讨一下这种数的特性

其实就是:卡特兰数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值