题目:
描述:
有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)