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