有关计算机代码的游戏,七灯游戏是一款经典的益智类游戏。游戏中,有七盏灯排成一圈,如图a所示,初始时灯的开关状态随机生成,操作其中某一盏灯,则可以切换该灯的“开/关”状态,同时,这盏灯-组卷网...

七灯游戏是一款经典的益智类游戏。游戏中,有七盏灯排成一圈,如图a所示,初始时灯的开关状态随机生成,操作其中某一盏灯,则可以切换该灯的“开/关”状态,同时,这盏灯对面的两盏灯也会切换“开/关”状态,如图b所示:

88c102dd35858938163677f94f660982.png

图a

87ba8c44da2136bd2226b6f9fd7d8c06.png

图b

图a为初始状态,操作圈中的灯,则该灯与对面的两盏灯都会切换“开/关”状态,如图b所示。假设这些灯的编号为0到6号,“开/关”状态随机产生,并输出到列表框List1中,接着需要从中选出数盏灯进行操作,使得最后所有灯都打开(已证明方案-一定存在且唯一),并在列表框List2中输出灯的编号。

程序采用枚举策略,一一尝试对每盏灯状态进行“切换"操作,“1”表示对当前灯进行切换,“0”表示不操作。

程序运行界面如图c所示。

4396e138c7cfee8e017126a05c92f8fe.png

图c

(1)0-6号灯的初始状态为“关 关 关 开 关 关 开”,如对1号灯进行切换操作,对面随之切换灯的编号是:_________________和_____________

(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。

Dim a(0 To 6)As Integer,b(0 To 6) As Integer

Private Sub Command1_Click()

Dim i As Integer,x As Integer,pos As Integer

Dim flag As Boolean

List2.Clear

For i = 0 To __________①________

x = i:pos = 0:flag = True

For j = 0 To 6

b(j)= a(j)

Next j

Do While x > 0

If x Mod 2 = 1 Then

b(pos)= 1 - b(pos)

b((pos + 3) Mod 7) = 1 – b((pos + 3) Mod 7)

___________②_______

End If

pos = pos + 1

x = x \ 2

Loop

For j = 0 To 6

If _____③___ Then flag = False:Exit For

Next j

If flag Then

pos = 0

Do While i > 0

If i Mod 2 = 1 Then List2.AddItem  "第" + CStr(pos)+  "号"

i = i \ 2

pos = pos + 1

Loop

Exit For

End If

Next i

End Sub

Private Sub Form_Load()’随机生成初始数据

Dim i As Integer

Randomize

List1.Clear

For i = 0 To 6

a(i)= Int(Rnd * 2)

If a(i)= 1 Then

List1.AddItem  "第" + CStr(i) +  "号:"+  "开"

Else

List1.AddItem "第" + CStr(i) +  "号:" +  "关"

End If

Next i

End Sub

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值