Python题目题解-九连环(n连环)

题目:

描述:

有n个环,拆装这些环的规则:

  • 第一个环可以随意拆装
  • 第二个只有在第一环已装上时可以拆装,第三个只有在第二个环已装上且第一个环已拆下时可以拆装。
  • 第 i 个环只有在第 i-1 环已装上,且第 i-2 、第 i-3 、…,第 1 环都拆下时可以装拆。

现输入n,表示这n个已经装上的环,现在输出拆下这n个环的最简单过程。
输出方法是每个状态用0、1来表示,0表示对应位置上的环已卸下,1表示对应位置上的环已装上,输出每拆装一个环时候的状态,初始状态也要输出。

输入:一个整数n,1 <= n <= 9
输出:输出每拆装一个环时候的状态。

样例:

#输入
2
#输出A-C
11
10
00

题解:

def xia(list,n):
    if n == 1:
        list[0] = 0
        print(''.join(str(i) for i in list))
    elif n == 2:
        list[1] = 0
        print(''.join(str(i) for i in list))
        list[0] = 0
        print(''.join(str(i) for i in list))
    else:
        xia(list,n-2)
        list[n-1] = 0
        print(''.join(str(i) for i in list))
        shang(list,n-2)
        xia(list,n-1)
def shang(list,n):
    if n == 1:
        list[0] = 1
        print(''.join(str(i) for i in list))
    elif n == 2:
        list[0] = 1
        print(''.join(str(i) for i in list))
        list[1] = 1
        print(''.join(str(i) for i in list))
    else:
        shang(list,n-1)
        xia(list,n-2)
        list[n-1] = 1
        print(''.join(str(i) for i in list))
        shang(list,n-2)
zm = int(input())
list = []
for i in range(zm):
    list.append(1)
print(''.join(str(i) for i in list))
xia(list,zm)

——————本文内容至此已结束——————

本文由凌霄之上博客原创发布或合理转载,未经允许•请勿转载。有什么想法来评论区讨论一下吧!

注意:资源无法下载(如链接无法打开),请联系管理员解决。另外蓝奏网盘链接如果无法打开,可以尝试将链接中的"lanzous"改为“lanzoui”

© 版权声明
THE END
喜欢就支持一下吧
点赞10赞赏 分享
评论 抢沙发

请登录后发表评论