试题

试题 试卷

logo

题型:综合题 题类: 难易度:普通

浙江省绍兴市2023-2024学年高二上学期信息技术期中考试选考试卷

某公路由于长期没有维修,路上出现了很多个坑。为了尽快填补好这些坑,交通管理部门决定对m处地段采取交通管制。将该公路看成一条直线,坑就是直线上的坐标点,坑所在的路段需要封控管制。例如某管制路段2~4,需封控2、3、4路段。交管部门为了减少管制路段的长度,希望将这n个坑分成m段(一段可以只有一个坑),使得这m段公路的总长度最小。请你根据n个坑的位置(位置已按照从小到大进行排序),计算管制路段最小的总长度。代码运行效果如题图所示。

请回答下列问题:

(1)、上图所示的例子中,若将路段数量修改为5,则管制路段总长度为
(2)、实现上述功能的Python程序如下,请在划线处填入合适的代码。

m=int(input("路段数量: "))

s=input("坑的坐标依次为:").split(',')  #实现字符串“3,4,6”,转化为列表["3","4","6"]

n=len(s)

for i in range(n) :

    s[i]=int(s[i])

flag=[False]*(n-1)

for i in range(1,m) :

    k=-1

    for j in range(n-1) :

        if :

            if k==-1 or s[j+1]-s[j]>s[k+1]-s[k]:

                k=j

    flag[k]=True

print("维修管制的路段依次为:")

dis,t=0,0

for i in range(n-1):

    if flag[i]:

        print(s[t],"~",s[i])

        dis+=s[i]-s[t]+1

       

print(s[t],"~",s[n-1])

dis=

print("管制总长度为",dis)

举一反三
有N堆纸牌,编号分别为①,②,…。每堆上有若干张,但纸牌总数必为N的倍数。可以在任一堆上取若干张纸牌,然后移动。

移牌规则:在编号为①的堆上取的纸牌,只能移到编号为②的堆上;在编号为N(N≥2)的堆上取的纸牌,只能移到编号为N-1的堆上;其他堆上取的纸牌,可以移到相邻左边或右边的堆上。

现在要求找出一种移动方法,用最少的移动次数使每堆上纸牌数都一样多。

例如N=4,4堆纸牌数分别为:

9

8

17

6

移动3次可达到目的:从③取4张牌放到④(9 8 13 10)→从③取3张牌放到②(9 11 10 10)→从②取1张牌放到①(10 10 10 10)。

现编写如下代码解决4堆任意张数牌的移动问题,请按提示补充划线句的代码:

Private Sub Command1_Click()

Dim aver As Single

Dim st As Integer     ‘统计移动的步数

Dim ssum, i, j As Integer

Dim a( 1 To 100) As Integer

a(1) = Val(Text1.Text)     ‘读取各堆牌张数,求总张数aver

a(2) = Val(Text2.Text)

a(3) = Val(Text3.Text)

a(4) = Val(Text4.Text)

ssum =a(1) + a(2) + a(3) + a(4)

aver=ssum \ 4     ‘求牌的平均张数aver

For i=1 To 4

  ① 

Next i

i=1     ‘过滤初端和末端的0

j = 4

Do While a(i) = 0 And i < 4

 i=i+1

Loop

Do While a(j) = 0 And j > 1

 j = j-1

Loop

st = 0

Do While i < j      ‘开始移动牌使数组a元素值均为0并过滤掉

  ② 

 a(i) = 0

 st = st + 1

 i=i+1

 Do While a(i) = 0 And i<j      ‘过滤掉数组a元素值均为0

   ③ 

 Loop

Loop

Print st      ‘输出移动次数

End Sub

返回首页

试题篮