解题思路:
穷举遍历。
①我们可以将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 人评分
C语言程序设计教程(第三版)课后习题11.5 (C语言代码)浏览:932 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:561 |
【亲和数】 (C语言代码)浏览:530 |
字符串比较 (C语言代码)答案错误????浏览:641 |
C语言程序设计教程(第三版)课后习题6.10 (C语言代码)浏览:1090 |
最小公倍数 (C语言代码)浏览:1105 |
1011题解浏览:819 |
文科生的悲哀 (C语言代码)浏览:1538 |
Minesweeper (C语言描述,蓝桥杯)浏览:1176 |
循环入门练习6 (C语言代码)浏览:1058 |