题目

平面上有N(3≤N≤100)个房间围成一圈,按顺时针方向分别编号为1、2……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程序。在窗体加载时,从数据库中读取N的值和编号为1到N的房间的居住人数,人数存储在数组a中。点击窗体上的按钮Command1,程序枚举每一种方案(不同的初始房间),计算该方案的能量和,在文本框Text1中输出最优方案的初始房间编号,在文本框Text2中输出最小能量和。 实现上述功能的VB代码如下,请在划线处填入合适代码。 Dim a(1 To 100) As Integer    '依次存储编号为1到100的房间居住人数 Private Sub Form_Load()      '本过程从数据库中读取N的值和每个房间居住人数,存储在数组a中      '代码略 End Sub Private Sub Command1_Click()     Dim i As Integer,j As Integer,w As Integer,k as Integer     Dim t As Long,ans As Long     k=0:ans=32767    'ans 初始化为最大的Integer数据     For i=1 To n         t=0         For j=0 To n-1             w=             If w=0 Then w=n             t=         Next j         If t<ans Then             k=i             ans=t         End If     Next i     Text1.Text=Str(k)    '起始房间编号     Text2.Text= End Sub 答案:【1】(i+j) Mod n【2】t+a(w)*j【3】Str(ans)
信息技术 试题推荐
最近更新