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

杨辉三角的变形

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

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

相关推荐

牛客279957775号:铁暗恋
点赞 评论 收藏
分享
粗心的雪碧不放弃:纯学历问题,我这几个月也是一直优化自己的简历,后来发现优化到我自己都觉得牛逼的时候,发现面试数量也没有提升,真就纯学历问题
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务