城堡问题。有一个城堡的地形图,城堡被分割成若干个方块,每个方块可以有0~4面墙(粗线表示墙)。

每个方块用一个代表其周围墙的数字之和(0≤p≤15)表示:1表示西墙,2表示北墙,4表示东墙,8表示南墙。城堡的内墙被计算两次,方块(1,1)的南墙同时也是方块(2,1)的北墙。城堡至少有两个房间。例如,图a的每个方块对应数字如图b所示。
程序运行界面如图c所示,现已知城堡地形对应的数字矩阵,要求出城堡一共有多少房间,最大的房间有多大。小金利用深度优先搜索算法解决当前问题,具体算法如下:
在城堡中按行搜索,找到第一个未被搜索过方块,以它为起点,分别按左、上、右、下的顺序向其四个方向试探,若发现一个方向上的方块是未被搜索过且可以通往的(无墙),则以这个方块为新起点,再重复上述试探。若当前方块四个方向上均无路可走,则返回上一个方块进行其他方向上的搜索,直至返回开始当前搜索的第一个方块且这个方块四个方向上也无路可走是,则本轮搜索结束。
(1)将界面中方块(2,2)对应的数字9改为13,方块(2,3)对应的数字6改为7,则城堡中最大的房间占 88块方格。
(2)实现上述功能的VB程序如下,请在横线处填入合适的代码。
Constm=4Constn=7
Dima(1Tom*n*4)AsIntegerDimf(1Tom*n)AsBoolean
Dimc(1Tom*n)AsIntegerPrivateSubCommand1_Click ( )( )
DimiAsInteger,jAsInteger,xAsInteger,yAsInteger
DimareaAsInteger,maxAsInteger,cntAsInteger
'城堡地形对应的数字矩阵,存入c数组中,并显示在列表框List1中,f数组初值为false,代码略.
Fori=1Tom*nx=c(i)
Forj=1To4
a((i-1)*4+j)=xMod2x=x\2
Nextj
Nexti
max=0
Fori=1Tom
Forj=1Ton
If①f((i-1)*n+j)=falsef((i-1)*n+j)=falseThen
cnt=cnt+1
area=Search(i,j)
Ifmax<areaThen
max=areaEndIf
Nextj
Nexti
Label1.Caption=“城堡一共有“+Str(cnt)+“个房间,最大的房间占“+Str(max)+“块方格.“
EndSub
'从方块(x,y)开始搜索,并返回其所在房间所占方块数.
FunctionSearch(ByValxAsInteger,ByValyAsInteger)AsInteger
DimiAsInteger,jAsInteger,sumAsInteger,rAsInteger,cAsInteger
Dimpre(1Tom*n)AsInteger'记录当前房间搜索的路径
Dimrow(1To4)AsInteger,col(1To4)AsInteger
row(1)=0:row(2)=-1:row(3)=0:row(4)=1
col(1)=-1:col(2)=0:col(3)=1:col(4)=0
sum=1:j=1:pre(1)=x*10+y
f((x-1)*n+y)=True
DoWhileTrue
Fori=1To4
r=x+row(i):c=y+col(i)
Ifr>=1Andr<=mAndc>=1Andc<=nThen
Iff((r-1)*n+c)=FalseAnd②a(((x-1)*n+y-1)*4+i)=0a(((x-1)*n+y-1)*4+i)=0Then
sum=sum+1
x=r:y=c
f((x-1)*n+y)=True
j=j+1
pre(j)=x*10+y
ExitFor
EndIf
EndIf
Nexti
Ifi>4Then
③j=j-1j=j-1
Ifj=0Then
ExitDo
x=pre(j)\10:y=pre(j)Mod10
EndIf
Loop
Search=sumEndFunction
【考点】应用程序的试运行和保存.
【答案】8;( );f((i-1)*n+j)=false;a(((x-1)*n+y-1)*4+i)=0;j=j-1
【解答】
【点评】
声明:本试题解析著作权属菁优网所有,未经书面同意,不得复制发布。
发布:2024/4/20 14:35:0组卷:0引用: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