解题思路:
穷举遍历。
①我们可以将9个开关看成9位二进制数,1表示开,0表示关。那么所有的可能也就是十进制下0~511。
②对十进制下0~511进行遍历,先将其转化为9位二进制数,然后判断每一个开关的状态,从而去调控
灯的状态。
每个开关按一次,灯的状态会发生变化开变为关,关变为开。此处假设灯关闭时的状态为0,打开时的
状态为1。则每次涉及到某个灯的状态变化时,我们可以将其此时的状态异或1,如此可以很方便的将其
状态进行转化。
③将符合条件的开关状态进行输出即可。
注意事项:
参考代码:
def f(): for s in range(512): s = list(map(int,'{:09b}'.format(s))) #记录每个开关状态 Light = [0]*9 #记录9个灯的状态 for i in range(9): #检索每个开关的状态,从而控制灯的状态 if s[i]: if i == 0: Light[1] = Light[1]^1 Light[3] = Light[3]^1 elif i == 1: Light[0] = Light[0]^1 Light[2] = Light[2]^1 Light[4] = Light[4]^1 elif i == 2: Light[1] = Light[1]^1 Light[5] = Light[5]^1 elif i == 3: Light[0] = Light[0]^1 Light[4] = Light[4]^1 Light[6] = Light[6]^1 elif i == 4: Light[1] = Light[1]^1 Light[3] = Light[3]^1 Light[5] = Light[5]^1 Light[7] = Light[7]^1 elif i == 5: Light[2] = Light[2]^1 Light[4] = Light[4]^1 Light[8] = Light[8]^1 elif i == 6: Light[3] = Light[3]^1 Light[7] = Light[7]^1 elif i == 7: Light[4] = Light[4]^1 Light[6] = Light[6]^1 Light[8] = Light[8]^1 elif i == 8: Light[5] = Light[5]^1 Light[7] = Light[7]^1 if sum(Light) == 4: for i in s: print(i,end = '') print() if __name__ == '__main__': f()
0.0分
2 人评分
Cylinder (C语言描述+详细分析)浏览:3265 |
C语言程序设计教程(第三版)课后习题11.3 (C语言代码)浏览:642 |
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:754 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:598 |
A+B for Input-Output Practice (IV) (C语言代码)浏览:666 |
ACM俱乐部密码浏览:935 |
C语言程序设计教程(第三版)课后习题5.5 (C语言代码)浏览:505 |
WU-C语言程序设计教程(第三版)课后习题5.8 (C语言代码)浏览:1279 |
DNA (C语言代码)浏览:437 |
输出九九乘法表 (C语言代码)浏览:932 |