小张用VB模拟实现了一个打地鼠游戏的计分程序。游戏规则如下:总共有10个地鼠洞,每秒地鼠选择一个洞探出脑袋,如果当前的锤子在该洞口,则打中地鼠,否则没有打中。游戏时间总共t秒(t<=10,Text1中输入),锤子的起始位置在b(1)(Text2中输入)。现已知每个时刻地鼠探脑袋的位置,根据锤子移动的路线,计算得出最多的得分,并输出到 Labe1l。
锤子移动规则:锤子每秒必须往左或往右移动一步(不可在当前位置停留),如果锤子已经在最左边了,只能往右移动;反之,只能往左移动。
计分方式:如果打中一个地鼠,计1分;如果连续打中地鼠,分数翻倍,即连续打中两个,分数为1+2;连续打中三个,分数为1+2+4;连续打中四个,分数为1+2+4+8……
算法思路:
①随机产生在第i秒时,地鼠探出脑袋的洞口为j。
若每个时刻地鼠探脑袋的洞口如图a所示,以10个洞口为横坐标n,游戏时间t(假设t=10)为纵坐标,建立一个矩阵a。当前时间出现地鼠的洞口标记为1,其余默认为0。
②模拟第i秒敲击洞口的位置。
1)若输入游戏过程如图b所示,从5号洞口出发b(1)=5,当时间为i=1时,可到达的洞口有2种:j=2时b(2)=6,j=1时b(1)=4,即得矩阵a的坐标位置i和b(j);
2)同理当i=2时,可到达的洞口有4种:j=4时b(4)=7,=3时b(3)=5,=2时b(2)=5,j=1时b(1)=3.i=1敲击洞口位置为6或4;i=2敲击洞口位置6→7,6-5或4→5,4→3;
3)将t秒内可经过的2t种不同路径敲击的矩阵位置的值存放到数组p中,如图b所示得到其中某一条路径p(j)=0101100010,根据p(j)计算得分,找出最值max并输出。
(1)如果游戏时间为10秒,每秒地鼠出现的洞口序号依次为[9,9,9,10,10,10,10,9,9,9],当锤子的起始位置在第6个洞口时,最多能得 55分。
(2)实现上述功能的VB程序如下,请在横线处填入合适的代码。
Private Sub Command1_Click ( )
Const n=10
Dim a(1 To n*n)As Integer,b(1 To 2^n)As Integer
Dim p(1 To 2^n)As String,s1 As String
Dim i As Integer,j As Integer,k As Integer,max As Integer
Dim t As Integer,s As Integer,f As Integer
Randomize
t=Val(Text1.Text)
For i=1 To t'第i秒时,地鼠探出脑袋的洞口为j
j=Int(Rnd*n+1)
①a((i-1)*n+j)=1a((i-1)*n+j)=1
List1.AddItem Str(i) &Str(j)
Next i
s1=““
For i=1 To t*n
s1=s1+Str(a(i))
If i Mod n=0 Then List2.AddItem s1:s1=““
Next i
b(1)=Val(Text2.Text)
For i=1 To n'计算锤子在a矩阵移动的路径,并存放在p数组
k=1'k为正则向右移动锤子,k为负则向左移动锤子
For j=2^i To 1 Step-1
b(j)=b((j+1)\2)+k
If b(j)<1 Or b(j)>n Then b(j)=b(j)-2*k
p(j)=p((j+1)\2)+CStr( ②a((i-1)*n+b(j))a((i-1)*n+b(j)))'CStr功能类似Str
k=-k
Next j
Next i
max=0
For i=1 To 2^n
f=0:s=0:j=1
Do While j<=Len(p(i))
If Val(Mid(p(i),j,1))>0 Then
③f=f*2+Val(Mid(p(i),j,1))f=f*2+Val(Mid(p(i),j,1))
Else
s=s+f:f=0
End If
j=j+1
Loop
If f>0 Then s=s+f
If max<s Then max=s
Next i
Label1.Caption=“最多能得“+Str(max)+“分“
End Sub
【考点】应用程序的试运行和保存.
【答案】5;a((i-1)*n+j)=1;a((i-1)*n+b(j));f=f*2+Val(Mid(p(i),j,1))
【解答】
【点评】
声明:本试题解析著作权属菁优网所有,未经书面同意,不得复制发布。
发布:2024/4/20 14:35:0组卷:1引用:1难度:0.3
相似题
-
1.大部分社交软件都有好友推荐的功能,当用户 A 和用户 B 的共同好友数量超过阈值 p 时,由系统向用户 A 推荐用户 B。
编写 VB 程序,实现好友推荐功能。运行程序,列表框 Listl 中显示用户 id 及好友列表,在文本框 Textl 中 输入推荐目标用户 id,在文本框 Text2 中输入阈值 p,点击“推荐”按钮,在列表框List2 中显示用户之间的关系,在标签 Label5 中显示向目标用户推荐的好友列表。程序运行界面如图:
(1)根据如图所示数据,若输入用户 id 为“3”,输入阈值为“3”,则推荐好友为:
(2)实现上述功能的 VB 程序如下,请在横线处填入合适的代码。发布:2025/1/2 10:30:2组卷:0引用:1难度:0.3 -
2.某学校开展了艺术节活动,数组a中存储了n个节目的编号和得分数据,数组存储结构如图所示:
小明使用选择排序思想对上述n个节目按得分进行降序排序(得分相同的按编号升序排列),并依据得分插入各个节目的排名信息,处理后数组a的存储结构如图所示:
程序运行时,单击命令按钮Command1后读取数据到数组a中并显示在列表框List1中,单击命令按钮Command2后将节目按照上述规则进行排序,并将排名结果显示在列表框List2中。
实现上述功能的VB程序如下,请回答下列问题:
(1)已知窗体名称为Forml,要使程序加载时,窗体标题自动显示为“第15题程序”,则可在
(2)请在横线处填入合适的代码。
(3)加框处代码有误,请改正。发布:2025/1/2 10:30:2组卷:0引用:1难度:0.3 -
3.小明用python语言中对大小为100*100像素的图像“上.jpg”(如图所示)进行简单处理,部分代码如图:
程序执行后的图像效果是( )发布:2024/12/20 9:30:2组卷:3引用:5难度:0.4