第十四届蓝桥杯python省赛题第4题编程题

题目描述:
提示信息:
杨辉三角就是一个用数排列起来的三角形(如下图),杨辉三角规则如下:
1)每行第一个数和最后一个数都为1,其它每个数等于它左上方和右上方的两数之和;
2)第n行有n个数。
注意:“列”指的是如图所标注的斜列。
在这里插入图片描述
编程实现:
小青对杨辉三角的特点和规律研究得很明白,现要考察你对杨辉三角的熟悉程度,首先告知你这是一个N行的杨辉三角,然后又告知了两个数值X和Y(X表示第几行,Y表示第几列),让你根据杨辉三角的特点和观察到的规律解决以下两个问题。
1)第X行第Y列对应的数是多少;
2)求出N行的杨辉三角中第Y列中所有数的和。
例如:N=5,5行的杨辉三角如下图:
在这里插入图片描述
X=5,Y=3,第5行第3列对应的数为6;第3列中所有数的和为10(10 = 6 + 3 + 1)。
输入描述
第一行输入一个正整数N(2≤N≤30),表示杨辉三角的行数。
第二行输入两个正整数X和Y(1≤Y≤X≤N),分别表示第X行和第Y列,正整数之间以一个英文逗号隔开。
输出描述
输出两个整数,分别表示N行的杨辉三角中第X行Y列对应的数,及第Y列上所有数的和,两个整数之间以一个英文逗号隔开。
样例输入
5
5,3
样例输出
6,10

解题分析:
1、本道题采用递归算法的方式去解决是最简单的步骤了。根据递归算法可以得到一下代码;

def abc(x,y):
    if y==1 or x==y:##头尾都返回数值 1
        return 1
    else:
        return abc(x-1,y)+abc(x-1,y-1)##中间项则为上一行同一项和上一行前一项相加

2、再根据题目意思得出解题算法步骤;

N=int(input())
X,Y=map(int,input().split(","))
a=0
while N>=Y:
    a+=abc(N,Y)
    N-=1
print("%d,%d"%(abc(X,Y),a))

3、代码结合

def abc(x,y):
    if y==1 or x==y:
        return 1
    else:
        return abc(x-1,y)+abc(x-1,y-1)
N=int(input())
X,Y=map(int,input().split(","))
a=0
while N>=Y:
    a+=abc(N,Y)
    N-=1
print("%d,%d"%(abc(X,Y),a))

点赞+关注

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ha___。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值