Diary of LX

  • 题目:
  • 描述:
  • 输入:一个整数n,1 <= n <= 9
  • 输出:输出每拆装一个环时候的状态。
  • 样例:
  • 题解:
  • 学习
  • 技术
  • 说说
  • 作业
  • 工具
  • 归档
  • 友链
  • 开往
  • 虫洞-个站商店
  • 虫洞-十年之约
  • GitHub
  • Telegram
  • Twitter
  • Link

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

  • lx
  • 2022-01-02
  • 0

题目:

描述:

有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)
© 2023 Diary of LX

Theme by Wing

           萌ICP备20228887号
  • {{ item.name }}
  • {{ item.name }}