如题,代码如下:
Option Explicit
Dim i, j
Dim min, max, dimension, numCount
Dim dimen()
dim src()
Dim rst()
dimension = Request.Forms("txtDimension") '没个组合数字的个数
numCount = Request.Forms("txtNumCount") '数字的个数
min = 1 '最小值
max = numCount '最大值
'取得参加组合的数字
redim src(numCount)
for i=1 to numCount
src(i)=Request.Forms("txtNum" & i)
next
'从小到大排序
for i=1 to numCount-1
for j=i+1 to numCount
if src(i)>scr(j) then
src(0)=src(i)
src(i)=src(j)
src(j)=src(0)
end if
next j
next
ReDim dimen(dimension - 1) '初始各维的当前值
For i = 0 To dimension - 1
dimen(i) = min
Next i
ReDim rst(0) '初始结果数组
Do
If Not AddArray(dimen, min, max, dimension) Then Exit Do
ReDim Preserve rst(UBound(rst) + 1)
rst(UBound(rst)) = replacr2Src(dimen)
Loop
'输出结果
For i = 1 To UBound(rst)
Response.Write rst(i) & "<BR>"
Next
Private Function AddArray(ByRef theArray, ByVal lngMin, ByVal lngMax, ByVal lngDimen)
Dim i, j, currentDimen
currentDimen = 0
For i = lngDimen - 1 To 0 Step -1
If theArray(i) < lngMax Then
theArray(i) = theArray(i) + 1
If currentDimen > 0 Then
'去掉重复的值
currentDimen = lngDimen - currentDimen
For j = currentDimen To lngDimen - 1
theArray(j) = theArray(j - 1)
Next
If theArray(lngDimen - 1) = theArray(0) Then theArray(lngDimen - 1) = theArray(lngDimen - 1) + 1
If theArray(lngDimen - 1) > lngMax Then Exit For
End If
For j = lngDimen - 1 To 1 Step -1
If theArray(j) <= theArray(j - 1) Then
AddArray = AddArray(theArray, lngMin, lngMax, lngDimen)
Exit Function
End If
Next
AddArray = True
Exit Function
Else
currentDimen = currentDimen + 1
End If
Next
AddArray = False
End Function
private function replacr2Src(byval theArray)
'将组合结果替换成原始数字
Dim
For i = numCount to 1 step -1
for j=UBound(theArray)-1 to 0 step -1
if theArray(j)=i then
theArray(j)=src(i)
exit for
end if
next
next
replacr2Src=Join(theArray, ",")
end function
Option Explicit
Dim i, j
Dim min, max, dimension, numCount
Dim dimen()
dim src()
Dim rst()
dimension = Request.Forms("txtDimension") '没个组合数字的个数
numCount = Request.Forms("txtNumCount") '数字的个数
min = 1 '最小值
max = numCount '最大值
'取得参加组合的数字
redim src(numCount)
for i=1 to numCount
src(i)=Request.Forms("txtNum" & i)
next
'从小到大排序
for i=1 to numCount-1
for j=i+1 to numCount
if src(i)>scr(j) then
src(0)=src(i)
src(i)=src(j)
src(j)=src(0)
end if
next j
next
ReDim dimen(dimension - 1) '初始各维的当前值
For i = 0 To dimension - 1
dimen(i) = min
Next i
ReDim rst(0) '初始结果数组
Do
If Not AddArray(dimen, min, max, dimension) Then Exit Do
ReDim Preserve rst(UBound(rst) + 1)
rst(UBound(rst)) = replacr2Src(dimen)
Loop
'输出结果
For i = 1 To UBound(rst)
Response.Write rst(i) & "<BR>"
Next
Private Function AddArray(ByRef theArray, ByVal lngMin, ByVal lngMax, ByVal lngDimen)
Dim i, j, currentDimen
currentDimen = 0
For i = lngDimen - 1 To 0 Step -1
If theArray(i) < lngMax Then
theArray(i) = theArray(i) + 1
If currentDimen > 0 Then
'去掉重复的值
currentDimen = lngDimen - currentDimen
For j = currentDimen To lngDimen - 1
theArray(j) = theArray(j - 1)
Next
If theArray(lngDimen - 1) = theArray(0) Then theArray(lngDimen - 1) = theArray(lngDimen - 1) + 1
If theArray(lngDimen - 1) > lngMax Then Exit For
End If
For j = lngDimen - 1 To 1 Step -1
If theArray(j) <= theArray(j - 1) Then
AddArray = AddArray(theArray, lngMin, lngMax, lngDimen)
Exit Function
End If
Next
AddArray = True
Exit Function
Else
currentDimen = currentDimen + 1
End If
Next
AddArray = False
End Function
private function replacr2Src(byval theArray)
'将组合结果替换成原始数字
Dim
For i = numCount to 1 step -1
for j=UBound(theArray)-1 to 0 step -1
if theArray(j)=i then
theArray(j)=src(i)
exit for
end if
next
next
replacr2Src=Join(theArray, ",")
end function
到这个网站转。很简单的。
以上代码是老版本VB写的
到这个网站转。很简单的。
不行的话。那就自己修改吧。
自己看着写出来,不就可以了吗?