一张纸横着对折 N 次 输出凹凸的序列

发布于 2023-06-11 20:04:19 字数 813 浏览 48 评论 0

思路解析:本题涉及到的折痕凹凸状态比较难统计,我们从最基本的情况开始分析:

  1. 对折 1 次,得到的序列为:[0, 1, 0],即初始状态为平的,折痕状态为凸,最终状态为平的。
  2. 对折 2 次,得到的序列为:[0, 1, 0, 1, -1, 0],即初始状态为平的,第一次折痕为凸,经过第二次折痕后,变为凹,最终状态为平的。

根据以上规律,我们可以得到对于第 n 次对折,最终得到的序列是由对于第 n-1 次对折的序列中的每个数字,在其前面加上 0 和 1,和在其后面加上 1 和相反数得到的。加上 0 是因为初始状态为平的,加上 1 是因为每次对折都会产生一个折痕,加上相反数是因为折痕后产生的凹凸状态相反。 因此,我们可以用类似于递归的方式,依次求出对于 1~n 次对折产生的序列,最后输出 n 次对折的序列即可。

def fold_paper(n):
    result = [0] # 初始化序列为 0,表示初始状态为平的
    for i in range(n):
        tmp = [] # 临时存储折痕序列
        for num in result:
            tmp.append(num) # 先将上一次的序列赋值到临时序列中
            tmp.append(1) # 加入折痕
            tmp.append(0 - num) # 加入折痕后的凹凸状态
        result = tmp # 更新序列
    return result

n = int(input("请输入对折次数:"))
res = fold_paper(n)
print(res)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

无需解释

暂无简介

0 文章
0 评论
23 人气
更多

推荐作者

13886483628

文章 0 评论 0

流年已逝

文章 0 评论 0

℡寂寞咖啡

文章 0 评论 0

笑看君怀她人

文章 0 评论 0

wkeithbarry

文章 0 评论 0

素手挽清风

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文