题解 | #杨辉三角的变形#

杨辉三角的变形

https://www.nowcoder.com/practice/8ef655edf42d4e08b44be4d777edbf43

# 解法一: 找规律,从杨辉三角的第三行开始循环
while True:
    try:
        n = int(input())
        res = [2, 3, 2, 4]
        print(-1 if n < 3 else res[(n - 3) % 4])
    except:
        break


# 解法二: 创建递归函数,但递归超过1000层会发生栈溢出
def fun(n):  # 创建递归函数
    if n == 1:  # 结束条件
        return [1]  # 杨辉三角的第一行,用列表储存数据
    else:  # 开始递归
        team = [0, 0] + fun(n - 1) + [0, 0]  # 补0,扩充fun(n-1)的有效长度,同时递归fun(n-1)
        ans = []  # 创建空列表储存递归列表数据
        for i in range(n * 2 - 1):  # len(fun(n)) = 2n-1
            ans.append(team[i] + team[i + 1] + team[i + 2])  # fun(n)的每一项为扩充fun(n-1)的每三项之和
        return ans  # fun(n)的列表数据


while True:
    try:
        n = int(input())  # 输入整数n(杨辉三角的第n行)
        if n < 3:  # 判断n的值
            print(-1)  # 杨辉三角前两行无偶数,输出-1
        else:  # 开始循环
            for i in range(n * 2 - 1):  # 遍历fun(n)
                if fun(n)[i] % 2 == 0:  # 第一个偶数的下标
                    print(i + 1)  # 下标+1即为所求
                    break  # 退出循环

        # 打印杨辉三角的每一项,供辅助理解
        for i in range(1, n + 1):  # 开始循环
            print("\t" * (n - i), end="")  # 打印空格
            print("\t".join(map(str, fun(i))))  # 打印杨辉三角

    except:
        break

#我的实习求职记录#
全部评论

相关推荐

Yushuu:你的确很厉害,但是有一个小问题:谁问你了?我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了😆
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务