组卷题库 > 高中信息技术试卷库

浙江省宁波市三锋教研联盟2021-2022学年高二下学期信息技术期中联考试题

作者UID:7189882
日期: 2024-12-22
期中考试
选择题(本大题共12小题,每小题2分,共24分)
非选择题(本大题共4小题,其中第13小题5分,第14小题8分,第15小题6分,第16题7分,共26分)
星期天小明来到动物园游玩,园内共有n 个景点,每个景点序号为0,1,2,3……至n-1。现在只知道每个景点有一条路连接下一个景点。小明想寻找能游玩景点个数最多的一种方案并且从其中一个景点出发,最后能够回到出发景点。如果游玩的景点个数一样,则优先考虑景点序号小的。

例如,共有n=5 个景点,每个景点连接的下个景点分别是1,3,4,4,1

景点号

0

1

2

3

4

下一个景点号

1

3

4

4

1

方案一:从0号景点出发,则游玩线路为:0号→1号→3号→4号→1号,由于此方案无法回到出发点,则不考虑;

方案二:从1号景点出发,则游玩线路为:1号→3号→4号→1号,然后回到1号景点。最多可以玩3个景点。

现用Python程序模拟这个问题:

先输入景点总数:n ;则对应的景点为[0,1,2,3,4]

然后随机产生各景点所连接的下一个景点的序号,如:[1,3,4,4,1];

接着产生一个列表,如上表的信息则产生的列表s为:[[0,1],[1,3],[2,4],[3,4],[4,1]],

最后利用链表的方式来分析解决问题。

程序如下:

import random

#产生信息列表s

n=int(input("景点总数 "))

tt=[ ]; s=[ ]; c=0

while c < n :

  t=random.randint(0,n-1)

  if t !=c :

    s.append([   ①  ])

    c+=1

print(s)

#枚举所有方案,寻找正确方案。

max=0

for head in range(n):

  p=head

  k=1

  while k<=n and s[p][1]!=head:

    k+=1

    p=s[p][1]

  if  :

    max = k

    maxp = head

print("小明最多能访问 %d 个景点"%(max))

#输出正确线路

p=maxp

while s[p][1]!=maxp:

  print(s[p][0],end="→")

  p=s[p][1]

print(   ②   )

试卷列表
教育网站链接