题目

平面上有n(3≤n≤100)个房间围成一圈,编号分别为1~n,相邻的两个房间之间均有一扇门,第i个房间最多居住的人数为a(i)。初始时选择一个房间,将所有人都聚集在该房间,接着每个人都可以按顺时针方向走到相邻的房间,直到找到居住的房间。最后各个房间刚好都住满。一个人每经过一扇门花费1个单位的能量,请确定初始房间及每个人找房间的方案,使得所有人花费的能量的和最小。例如:n=5,a(1)=4,a(2)=7,a(3)=8,a(4)=6,a(5)=4。 最佳方案为初始时所有人聚集在2号房间,此时花费的最小能量为7×0+8×1+6×2+4×3+4×4=48。 实现上述功能的VB代码如下,但加框处代码有误,请改正。 Dim a(1 To 100)As Integer       ‘依次存储编号为1到100的房间的最多居住人数 Private Sub Form_Load( )     ‘产生n的值     ‘本过程从数据库中依次读取编号为1到n的房间的最多居住人数,并存储在数组a中     ‘代码略 End Sub Private Sub Command1_Click( )   Dim i As Integer,j As Integer,w As Integer   Dim t As Long,ans As Long   ans=32767   For i=1To n     t=0     For j=0 To n-1                       ‘①       If w=0 Then w=n                     ‘②     Next j     If t<ans Then ans=t   Next i   Text2.Text=Str(ans) End Sub 以上程序段运行时,为了实现上述功能,加框处代码应改正为:①;②。 答案:【1】w=(i+j)Mod n【2】t=t+ a(w)*j
信息技术 试题推荐