小杜编写VB解决上述问题的程序,其功能如下:程序运行时在文本框Text1中输入整数序列(输入的数据保证存在符合条件的子序列),在Text2中输入整数s。单击按钮Command1后在标签Label1上输出总和不小于s的连续子序列,程序运行如图所示。
(1)
给定整数序列为{5,1,3,5,10,7,4,9,2,8},整数s=15,符合条件的长度最小的子序列为。
(2)
实现上述功能的VB程序如下,请在划线处填入合适代码。
Dim a(1 To 100) As Integer
Dim sum(0 To 100) As Integer
’sum(i)存储
a(1)+a(2)+…+a(i)的值
Dim n As Integer, s As
Integer
Private Sub Form_Load()
‘读取整数序列依次存储在数组a中
‘读取整数序列长度存储在变量n中
‘本过程代码略
End Sub
Private Sub Command1_Click()
Dim i As Integer, ans As
String
Dim Min As Integer ‘存储符合条件的最小长度
Dim iMin As Integer ‘存储符合条件子序列的起始位置
s=val(Text2.text)
For i = 0 To n
sum(i) = 0
Next i
For i = 2 To n
sum(i) = a(i) + sum(i-1)
Next i
Min = n
iMin = 1
For i = 1 To n
j=i
Do WhileAnd
j<= n
j = j + 1
Loop
If j <= n And j - i + 1 < Min Then
Min = j - i + 1
iMin = i
End If
Next i
ans =“”
For i = iMin To
ans = ans + Str(a(i))
Next i
Label1.Caption = “符合条件的子序列为” + ans
End Sub
答案: 【1】{5,10}
【1】sum(1) =a(1)【2】sum(j)-sum(i-1) < s【3】iMin+Min-1