历年蓝桥杯Python青少组中/高级选拔赛(STEMA)真题解析 | 2024年3月编程题(10)

学习Python从娃娃抓起!记录下蓝桥杯备考学习过程中的题目,记录每一个瞬间。
附上汇总贴:历年蓝桥杯Python青少组中/高级选拔赛(STEMA)真题解析 | 汇总


【题目描述】

有71个大小相等个格子从左到右排成一排,编号从0到70,其中N个格子有荷叶,初始时青蛙在编号为0的格子。青蛙要按照以下规则,跳到最后一个有荷叶的格子:

1、青蛙每次最少跳1格,最多跳x格;

2、青蛙每次只能调到有荷叶的格子;

3、青蛙不能往回跳。

给定N个有荷叶的格子编号,以及青蛙每次最多可以跳的格子数x,请计算青蛙一共有多少种不同的方式跳到最后一个有荷叶的格子,如果青蛙不能跳到最后一个由荷叶的格子,输出0。

例如:N=4,x=3,4个有荷叶的格子编号依次为1、3、4、6,青蛙每次最多跳3格;

在这里插入图片描述

第一种:先跳到编号1的格子,接着跳到编号3的格子,再跳到编号4的格子,最后跳到编号6的格子;

在这里插入图片描述

第二种:先跳到编号1个格子,再跳到编号3的格子,最后跳到编号6的格子;

在这里插入图片描述

第三种:先跳到编号1的格子,再跳到编号4的格子,最后跳到编号6的格子;

在这里插入图片描述

第四种:先跳到编号3的格子,再跳到编号4的格子,最后跳到编号6的格子;

在这里插入图片描述

第五种:先跳到编号3的格子,最后跳到编号6的格子。

在这里插入图片描述

青蛙一共有5种不同的方式跳到最后一个有荷叶的格子。

【输入】

第一行输入一个整数N( 3 ≤ N ≤ 30 3\le N\le 30 3N30),表示有荷叶的格子数

第二行按从小到大的方式输入N个互不相同的整数( 1 ≤ 整 数 ≤ 70 1\le 整数\le 70 170),表示有荷叶的格子编号,整数之间以一个空格隔开

第三行输入一个整数x( 1 ≤ x ≤ 5 1\le x \le 5 1x5),表示青蛙每次最多可以跳的格子数

【输出】

输出一个整数,表示青蛙一共有多少种不同的方式跳到最后一个有荷叶的格子

【输入样例】

4
1 3 4 6
3

【输出样例】

5

【代码详解】

在这里插入图片描述

n = int(input())
ls = [int(i) for i in input().split()]
a = [0 for i in range(70+1)]
a[0] = 1
for i in range(len(ls)):
    a[ls[i]] = 1
# print(a)
dp = [0 for i in range(70+1)]
x = int(input())
dp[0] = dp[1] = 1
for i in range(x, ls[n-1]+1):
    if a[i]==0:
        continue
    for j in range(i-x, i):
        if a[j]==1:
            dp[i] += dp[j]
# print(dp)
print(dp[ls[n-1]])

【运行结果】

4
1 3 4 6
3
5
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值