学进去-教育应平等而普惠
试题
类型:操作题
难度系数:0.85
所属科目:高中信息技术
某学校组织教师插花。桌子上依次放着n朵花。这些花只有两种:红玫瑰和白玫瑰。颜色相同的连续放在一起的花称为一个“块”。老师们依次挑花,挑完为止。每个老师挑选的方法为:每次都把每一个“块”中最左边的花同时挑出,组成一个花篮。重复这一操作,直到花全部挑完。注意,当一个块被挑完后,相邻颜色相同的花可能合并为一个块。
例如:num=[1,1,0,0,1,1,1,0,1,1,0,0]。数字0和1分别表示红玫瑰和白玫瑰。第1次挑出的花的编号为:0、2、4、7、8、10。当编号为7(值为0)的花被挑出后,左右两边可以合并为一个块。则第2次挑出的花的编号为:1、3、5、11。
小明同学编写了一个 Python 程序,来模拟这一过程。程序输出每次挑选的花的编号。程序运行界面如图所示。

(1)若花的排列为[1,1,1,0,0,1,0,0],挑______次能挑花完成,第3次挑出的花的编号为:_______
(2)Python程序如下,其中que用于存放每一块的左右端点及该块的值,例如[1,3,0],表示该块从编号1至3,每个值为0。完善代码
   num=[1,1,0,0,1,1,1,0,1,1,0,0]
   que=[[0]*3 for i in range(10)]
   tmp=[[0]*3 for i in range(10)]
   tail=0
   used=[0]*100                         #标记是否已被挑出
   print("花的摆放:",num)
   #将花按颜色进行分块
   num.append(2)                       #向列表num中添加一个元素2
   l=r=0                                     #标记每一块的左右端点
   for i in range(1,len(num)):
        if num[i]!=num[i-1]:
             que[tail]=[l,r,num[i-1]]
             tail+=1
             _______
        else:
             r=i
   while tail>0:
          for i in range(0,tail):                 #输出结果
               x=que[i][0]
               if used[x]==0:
                    print(que[i][0],end=" ")
                    used[x]=1
                    if i==tail-1:
                            print()                 #如果是最后一个换行
               _______
          k=0                                      #去掉挑完的
          for i in range(0,tail):
               if que[i][0]>que[i][1]:          #当前块取完了
                    continue
               else:                                 #放入临时数组
                    if k==0:
                    tmp[k]=que[i]
                    k+=1
               else:                                 #看能否合并
                    if que[i][2]==tmp[k-1][2]:
                         ________
                    else:
                         tmp[k]=que[i]
                         k+=1
          for i in range(k):                      #将 tmp 再赋值给 que
               que[i]=tmp[i]
            tail=k
编辑解析赚收入
收藏
|
有奖纠错

同类型试题

优质答疑

y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2

用户名称
2019-09-19

y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2

用户名称
2019-09-19
我要答疑
编写解析
解析:

奖学金将在审核通过后自动发放到帐

提交
我要答疑
我要答疑:
提交