当前位置: 高中信息技术 / 综合题
  • 1. (2019·浙江模拟) 平面上有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=1 To n

         t = 0

         For j=0 To n-1

                ‘(1)

          If w=0 Then w=n

               ‘(2)

       Next j

       If t < ans Then ans = t

    Next i

    Text2.Text = Str(ans)

    End Sub

    以上程序段运行时,为了实现上述功能,加框处代码应改正为:

    ;⑵

微信扫码预览、分享更方便