【加试题】从前有一位老渔夫,有一天他捕到了一只大金龟,在金龟的苦苦哀求下,老渔夫放走了金龟,为了报恩,大金龟给老渔夫准备了一份厚礼.大金龟拿出了n件宝贝,每件宝贝都标了编号、体积和价值,还给了他一个规定体积的背包,只要能装入背包的东西都归老渔夫所有,老渔夫如何装包得到的总价值才最大(每件宝贝都可以分割为最小1个单位体积.如:编号001的宝贝,价值100,体积50,最小可以分割为50份).
小林编写了一个VB程序,实现如下功能:程序运行时,首先从数据库读取每件宝贝的编号、价值和体积,分别存储在数组bh、value、volume中,并显示在列表框List1中;在文本框Text1中输入背包的体积,单击“求解”按钮Command1后,在列表框List2中显示依次所取的宝贝的相关信息,最后,在列表框List2中最后一行显示背包的总价值.程序运行界面如图所示.

本题算法思想:
(1)首先计算出每件宝贝的单位价值(单位价值=价值/体积).
(2)由于每件宝贝是可以任意分割的,因此,先将宝贝按单位价值降序排序,然后依次从单位价值最大的宝贝开始装入背包,直到装满整个背包为止.
实现上述功能的程序如下,请在程序画线处填入合适的语句或代码.
①处代码应为 value(i)/volume(i)value(i)/volume(i);
②处代码应为 ans=ans+value(i)ans=ans+value(i);
③处代码应为 m=m-valuem=m-value.
Dim bh(1 To 20)As String,n As Integer'数组bh存储宝贝的编号,n表示宝贝数
Dim volume(1 To 20)As Long,value(1 To 20)As Long,vpv(1 To 20)As Single'数组
value、volume、vpv分别存储宝贝的价值、体积和单位体积的价格
Private Sub Form_Load( )
'本过程的功能是从数据库读取每件宝贝的信息,并存储在数组中,本过程其他语句略
End Sub
Private Sub Command1_Click( )
Dim m As Integer,i As Integer,j As Integer,ans As Single
Dim temp1 As String,temp2 As Integer,temp3 As Integer,temp4 As Single
m=Val(Text1.Text)
For i=1 To n
vpv(i)=①①
Next i
For i=1 To n-1
For j=n To i+1 Step-1
If vpv(j)>vpv(j-1)Then
temp1=bh(j):bh(j)=bh(j-1):bh(j-1)=temp1
temp2=value(j):value(j)=value(j-1):value(j-1)=temp2
temp3=volume(j):volume(j)=volume(j-1):volume(j-1)=temp2
temp4=vpv(j):vpv(j)=vpv(j-1):vpv(j-1)=temp3
EndIf
Next j
Next i
i=1:j=n:ans=0
List2.AddItem“编号“+“价值“+“体积“+“单位体积“+“装入背包的体积“
Do While m>0 And j>=1
If m-volume(i)>=0 Then
②②
List.AddItem bh(i) &““& value(i) &““& volume(i) & vpv(i)+&““& volume(i))
Else
ans=ans+m*vpv(i)
List2.AddItem bh(i) &““& value(i) &““& volume(i) &““& vpv(i) &““& m
EndIf
③③
i=i+1;j=j-1
Loop
List2.AddItem“背包总价值为:“+Str(ans)
End Sub.
【考点】编辑事件处理过程的代码.
【答案】value(i)/volume(i);ans=ans+value(i);m=m-value;①;②;③
【解答】
【点评】
声明:本试题解析著作权属菁优网所有,未经书面同意,不得复制发布。
发布:2024/6/27 10:35:59组卷:7引用:1难度:0.3
相似题
-
1.根据AQI值判断城市的空气质量。若城市的AQI值(整数)不超过100则空气质量优良,否则空气质量有污染。当输入的AQI值为-1时则退出程序。不要更改程序结构,将题中的①②③④填入正确的语句。
city=input(“请输入城市名:”)
AQI=int(input(“请输入空气质量指数AQI的值:”))
①______ AQI!=-1:
if ②______:
print(city,“的空气质量优良。”)
③______:
print(city,“的空气质量有污染。”)
city=input(“请输入城市名:”)
AQI=④(input(“请输入空气质量指数AQI的值:”))
(1)序号①答案为
A.if
B.while
C.for
D.def
(2)序号②答案为
A.AQI>=100
B.AQI<=100
C.AQI>100
D.AQI<100
(3)序号③答案为
A.elif
B.break
C.if
D.else
(4)序号④答案为
A.int
B.float
C.str
D.else发布:2025/1/2 11:0:1组卷:0引用:0难度:0.4 -
2.一球从100米高度自由落下,每次落地后反跳回原高度的一半,再下落。编写一个C程序,求它在第10次落地时,其经过了多少米?第10次反弹多高?
发布:2025/1/2 11:0:1组卷:1引用:3难度:0.3 -
3.利用海伦公式求解三角形面积。已知a,b,c为三角形的三条边长,p为三角形的半周长,即p=(a+b+c)/2,计算此三角形面积S的海伦公式为:
。不要更改程序结构,将题中的①②③填入正确的语句。
import math#导入数学模块
def hl(a,b,c):#定义求三角形面积的函数
p=①
s=math.jye.ai(②)#sqrt用于计算算术平方根
return ③#返回面积的值
a,b,c=3,4,5#边长依次赋值
print(“此三角形的面积S为:“,hl(a,b,c))
A. (a+b+c)/2 B.p*(p-a)*(p-b)*(p-c)
C. (a+b+c)*2 D.s
(2)序号②答案为
A.(a+b+c)/2 B.p*(p-a)*(p-b)*(p-c)
C.(a+b+c)*2 D.(3+4+5)/2
(3)序号③答案为
A.p B.s
C.p*(p-a)*(p-b)*(p-c) D.0发布:2025/1/2 11:0:1组卷:0引用:0难度:0.4