1. 并列一排的n个房间(房间间距均为1个单位),依次编号为1~m,其中k个房间需要配送服务,现有处于不同房间的m台机器人可提供配送服务。配送系统为管理方便,对所有机器人设置相同的配送半径r (机器人以所在房间为起点,可配送左右各r个连续房间)。可以设置最小配送半径来满足k个房间的配送要求。

例如,根据系统依次采集到的数据,当前需要配送的5个房间编号分别为1,8,3,4,7,可提供配送服务的机器人1、机器人2分别处在房间2、房间7,如下图所示。各房间可选择最近的机器人提供配送服务,例如房间4离机器人1的距离为2,离机器人2的距离为3,因此可以选择机器人1的配送服务。确定各房间所选择的机器人后,计算各房间与所选择的机器人的距离,取其最大值即为最小配送半径。因此,要满足这5个房间的配送要求,对2台机器人可以设置的最小配送半径为2。

房间编号

1

2

3

4

5

6

7

8

需配送的房间

机器人

机器人1

机器人2

(1) 若需配送服务的房间编号分别为1,3,2,4,5,6,可提供配送服务的2台机器人所处房间编号为4,1,则最小配送半径应设置为
(2) 实现上述功能的Python程序如下,请在划线处填入合适的代码。

def sort_ arr(a):         #对数组进行升序排序

     m = len(a)

     i=1

 

     whilei<= m- 1 and flag == True:

         flag = False

         for j in

         if a[j] <a[j-1]:

              a[j], a[j-1|=a[j-1], a[j]

              flag = Truc

      i+=1

    return a

def bisearch(v, b): .

  i,k = 0, len(b)

  j=k- 1

  while i<=j:

       mid=(i+j)//2

       if

           i=mid+1

       else:

           j= mid- 1

  retur i

def max_ min(houses, b):

    minr= 0

    for h in houses:

       R = bisearch(h, b)

       if R == len(b):

          r=h-b[R- 1]

       elif R== 0:

          r= b[R]- h

       else:

      minr = max(r, minr)

    return minr

if_ name_ == '_ main_ ':   #主程序

    #将需配送的房间编号存入整型数组houses

#将机器人所在房间编号存入整型数组b,代码略

#例如: houses= |8, 3, 4, 7, 1], b= |7, 3|

b= sort_ arr(b)

print(max_ min (houses, b))#输出最小配送半径

【考点】
排序算法及程序实现; 查找算法及程序实现;
【答案】

您现在未登录,无法查看试题答案与解析。 登录
综合题 困难
能力提升
真题演练
换一批
1. 某校对高一新生按分班考试总分进行平行分班,具体分班规则如下:将高一年级学生按女生在前、男生在后分别按总分进行降序排序,然后按名次序号进行蛇形分班,例如分成6个班的分班示意如图a所示。

实现上述功能的Python程序如下,程序运行结果如图b所示。回答下列问题:

#从文件15. csv中读取学生分班数据(已按考号升序排序),保存在列表d中

#其中d[0]数据为['考号','姓名','性别','总分'],变量w存储女生人数,代码略

n=len (d) ; bj=[0]*n

for i in range (n):

    b j[i]=i

for i in range(1, n+1):

    for j in :   #①

        if d[bj[j]][2]==d[bj[j+1]][2] and int (d[bj[j]][3])<int (d[bj[j+1]][3]):

            bj[j], bj[j+1]=bj[j+1], bj[j]

           #②

            bj[j], bj[j+1]=bj[j+1], bj[j]

cla=0;k=1

for i in range(1, n) :

    cla+=k

    if   ③  

        cla=12;k=- 1

    elif cla>12:

        cla=12;k=-1

    elif cla<1:

        cla=1; k=1

    d[bj[i]]. append (cla)

for i in range(n) :

    print (d[bj[i]])

no=input ("请输入查找的学生考号:(输入End结束) ")

while no!="End":

    i=1; j=n-1

    while i<=j:

        m=(i+j)//2

        if d[m] [0]==no:

            print("学号: "+no+" "+d[m] [1]+"同学在"+str(d[m] [4])+"班")

           break

        elif   ④  

            i=m+1

        else:

            j=m-1

if i>j:

    print ("没有找到该同学)

no=input ("请输入查找的学生考号: (输入End结束) ")

(1) 女生名次序号为100的同学按上述规则分班到班(共12个班)。
(2) 程序中加框处①代码(填:能/不能)替换为range(n-i-1,0, -1)。
(3) 程序中加框处②代码有错误,请改正。
(4) 在划线处③④填入正确的代码。

综合题 困难
2. 小明过生日,他要一个三层的大蛋糕,每一层都是一个小蛋糕。蛋糕店刚好有对应上、中、下三层的三类蛋糕,大家知道多层蛋糕一般都是上层最小,中层其次,下层最大,不然蛋糕就不漂亮了。所以请你帮助明明计算,在知道每一类蛋糕的体积的前提下有多少符合条件的方案。

如下图所示,其中第一层蛋糕有5种,体积分别为4、3、5、8、1;第二层有4种,体积分别为6、4、8、5;第三层有7种,体积分别为5、9、4、5、7、6、4。所选方案须符合“第一层<第二层<第三层”,如:第层选3,第二层选4第三层选6。方案共有31种。

请在划线处填入适当的代码。

Dim a(100) As Integer, b(100) As Integer, c(100) As Integer

'a、b、c数组分别存储上、中、下三层蛋糕的体积

Dim i As Integer, j As Integer, cnt As Integer, ans As Integer

Dim na As Integer, nb As Integer, nc As Integer

'na,nb、nc分别记录上、中、下三层蛋糕的种类数量

Private Sub Command1_ Click( )

    Dim L As Integer, R As Integer, m As Integer

    For i=1 To na-1

        For j=na To i+1 Step-1

            If a(j) < a(j-1) Then tmp=a(j) : a(j) =a(j-1) : a(j-1)= tmp

        Next j

    Next i

    For i=1 To nc-1

        For j=nc To i+1 Step-1

            If c(j) < c(j-1) Then tmp= c(j) :c(j)=c(j- 1) :c(j- 1)= tmp

        Next j

    Next i

    For i=1 To

        L=0 : R=na+ 1

        Do While L+1<R

            m=(L+ R)\ 2

            If a(m) < b(i) Then

                L=m

            Else

                R= m

            End If

        Loop

        cnt= L

        L=0 : R=nc十1

        Do While L+1<R

            m=(L+R)\2

            If  Then

                R= m

            Else

                

            End If

        Loop

        cnt=cnt * ()

        ans= ans+cnt

    Next i

    Label1. Caption="共有"十Str(ans) + "种方案

End Sub

Private Sub Form_ Load(  )

    '随机生成三层蛋糕的数量存储在na、nb、nc中,生成三层蛋糕的体积存储在a、b、c数组中,并输出,代码略

End Sub

综合题 困难
3. 某校以投票方式评选优秀作品,每张选票仅填一个作品编号,得票数过半的获最具人气奖。小李和小王收集了全部选票,其中小李已将收集的选票按作品编号非降序排序,小王收集的选票未排序。现要求将全部选票按作品编号非降序排序,找出获最具人气奖的作品编号。

编写VB程序,实现上述功能。运行程序,在列表框List1中显示全部选票,小李收集的选票在前,小王收集的选票在后。单击“分析”按钮Command1,在列表框List2中按作品编号非降序显示全部选票,在文本框Text1中显示最具人气奖的作品编号。程序运行界面如图所示。

(1) 类生成的对象没有Caption属性(单选,填字母: A . Label 1 /B . ListBox 1/C . CommandButton)。
(2) 实现上述功能的部分VB程序如下,请在划线处填入合适的代码。

'm和n是常量,代码略

Dim a(l To n) As String,c(1 To n) As String

Private Sub Form_ Load( )

    '将n张选票的作品编号存入数组a,在List1中显示,代码略

    'a(1)~ a(m)、a(m+1)~ a(n)分别为小李和小王收集选票的作品编号

End Sub

Private Sub Command1_ Click()

    Dim iAs Integer, j As Integer, k As Integer, t As String

    For i=m+ 1To n-1

        For j=n- 1 To i Step-1

           

            If a(k) < a(i) Then t= a(j): a(j)= a(k): a(k)=t

        Next j

    Next i

    i= 1

   

    For k=1 To n

        If j> n Then

            c(k)=a(i)i=i+1

        Elself  Then

            c(k)=a(i)ti=i+ I

        Else

            c(k)=a():j=j+ 1

        End If

        List2. Addtem c(k)

    Next k

    Text1.Text = "无"

    For i=

        If c(i)=c(i+n \ 2) Then

           Text1.Text = c(i): Exit For       'Exit For表示退出循环

        End If

    Next i

End Sub

(3) 程序中加框处代码有错,请改正。
综合题 困难