题型:综合题 题类:常考题 难易度:困难
浙江省嘉兴市2018-2019学年高三信息技术3月嘉丽联考试卷
⑴如果只有1人过桥,时间为个人过桥时间。
⑵如果有2人一起过桥,时间以慢的人为准。
⑶如果有3个人a、b、C,耗时Ta<Tb<Tc , 过桥方案为让a和b一起过桥,a拿手电筒回来,然后与C一起过桥。
⑷如果存在多于3个人,如a、b、……、y、z需要过桥,耗时Ta<Tb<……<Ty<Tx , 这时有两种可选方案,选择其中用时少的,直至剩余少于4人。
①最快的1个将最慢的2个分别送过桥。
a拿手电筒与z过桥,然后a拿手电筒回来再与y一起过桥,a拿手电筒回来;
②最快的2个将最慢的2个送过桥。
让a、b拿手电筒先过桥,a拿手电筒回来,让y、z手拿电筒过桥,然后b拿手电筒回来。
为验证方案,小明设计了相应的VB程序。首先从数据库中获取每个人的过桥时间,并显示在列表框List1中,单击“计算”按钮Command1,在文本框Text1中输出最短耗时,界面如图a所示。
Dim n As Integer ‘存放过河人数
Dim t(1 T0 100)As Integer ‘存放每个人单独过桥时间
Private Sub Form_Load()
‘从数据库中读取每个人的过桥时间显示在列表框List1中,并统计总人数n,代码
略
End Sub
Private Sub Command1_Cl ick()
Dim i As Integer,k As Integer,j As Integer,temp As Integer
Dim sum1 As Integer,sum2 As Integer,tsum AS Integer
sum1=0:sum2=0:tsum=0
For i=1 To n-1 ‘对每个人的过桥耗时进行升序排序
k=i
For j=i+1 To n
If Then k=j
Next j
If k<>i Then
temp=t(i):t(i)=t(k):t(k)=temp
End If
Next i
i=n
Do While i>3
sum1=2*t(1)+t(i-1)+t(i) ‘方案①
sum2=t(1)+2*t(2)+t(i) ‘方案②
If sum1<sum2 Then
tsum=tsum+sum1
Else
tsum=tsum+sum2
End If
i=
Loop
If i=1 Then ‘剩下1个人
tsum=tsum+t(1)
ElseIf i=2 Then ‘剩下2个人
tsum=tsum+t(2)
Else ‘剩下3个人
tsum=
End If
Text1.Text=Str(tsum)
End Sub
排序前 |
71 |
85 |
64 |
55 |
42 |
62 |
33 |
17 |
34 |
30 |
排序后 |
71 |
85 |
17 |
55 |
33 |
30 |
62 |
42 |
34 |
64 |
实现上述功能的VB程序如下,但加框处代码有错,请改正。
Const n=10
Dim a(1 To n) As Integer
Private Sub Command1_Click()
Dim i As Integer,j As Integer
Dim temp As Integer,flag As Boolean
'读取一组正整数,存储在数组a中,代码略
i=1:j=n
temp=a(j):flag=True
Do While i<j
If flag Then
If a(i) Mod 2=0 Then
a(j)=a(i)
j=j-1
flag=Not flag
Else
'{#blank#}1{#/blank#}
End If
Else
If a(j) Mod 2=1 Then
a(i)=a(j)
flag=Not flag
Else
j=j-1
End If
End If
Loop
' {#blank#}2{#/blank#}
'依次输出排序后的数据,代码略。
End Sub
试题篮