当前位置:编程学习 > VB >>

请教关于vbs提高循环效率的问题

新手求助
具体代码如下:
Dim n(9),sum
Dim e1,e2,e3,e4,e5,e6
Dim oExcel,oWb,oSheet,oPath

oPath = createobject("wscript.shell").currentdirectory
Set oExcel= CreateObject("Excel.Application") 
Set oWb = oExcel.Workbooks.Open(oPath&"\nums.xls") 
Set oSheet = oWb.Sheets("Sheet1")

For i=0 To 9
    n(i) = i
Next 

sum = 10

For e6=0 To 9
    For e5=0 To 9
        For e4=0 To 9
            For e3=0 To 9
                For e2=0 To 9
                    For e1=0 To 9
                        If n(e5,1)+n(e6,1)+n(e7,1)+n(e8,1)+n(e9,1)+n(e10,1) = sum And n(e1,0)<n(e2,0) And n(e2,0)<n(e3,0) And n(e3,0)<n(e4,0) And n(e4,0)<n(e5,0) And n(e5,0)<n(e6,0) Then
                        oExcel.ActiveSheet.Cells(r1,2).Value = n(e1,0)
                        oExcel.ActiveSheet.Cells(r1,3).Value = n(e2,0)
                        oExcel.ActiveSheet.Cells(r1,4).Value = n(e3,0)
                        oExcel.ActiveSheet.Cells(r1,5).Value = n(e4,0)
                        oExcel.ActiveSheet.Cells(r1,6).Value = n(e5,0)
                        oExcel.ActiveSheet.Cells(r1,7).Value = n(e6,0)
                        r1=r1+1
                        End If
                    Next
                Next 
            Next 
        next
    next
Next

oExcel.save 
oExcel.quit 
oExcel.Workbooks.Close
MsgBox "ok"


用目前这个算法,程序执行起来非常慢,请问如何能提高算法的效率? --------------------编程问答-------------------- 你这个n到底是几维数组? --------------------编程问答-------------------- 回复楼上,我编辑错了,n是一位数组,正确的代码应该是
Dim n(9),sum
Dim e1,e2,e3,e4,e5,e6
Dim oExcel,oWb,oSheet,oPath

oPath = createobject("wscript.shell").currentdirectory
Set oExcel= CreateObject("Excel.Application") 
Set oWb = oExcel.Workbooks.Open(oPath&"\nums.xls") 
Set oSheet = oWb.Sheets("Sheet1")

For i=0 To 9
    n(i) = i
Next 

sum = 10

For e6=0 To 9
    For e5=0 To 9
        For e4=0 To 9
            For e3=0 To 9
                For e2=0 To 9
                    For e1=0 To 9
                        If n(e1)+n(e2)+n(e3)+n(e4)+n(e5)+n(e6) = sum And n(e1)<n(e2) And n(e2)<n(e3) And n(e3)<n(e4) And n(e4)<n(e5) And n(e5)<n(e6) Then
                        oExcel.ActiveSheet.Cells(r1,2).Value = n(e1)
                        oExcel.ActiveSheet.Cells(r1,3).Value = n(e2)
                        oExcel.ActiveSheet.Cells(r1,4).Value = n(e3)
                        oExcel.ActiveSheet.Cells(r1,5).Value = n(e4)
                        oExcel.ActiveSheet.Cells(r1,6).Value = n(e5)
                        oExcel.ActiveSheet.Cells(r1,7).Value = n(e6)
                        r1=r1+1
                        End If
                    Next
                Next 
            Next 
        next
    next
Next

oExcel.save 
oExcel.quit 
oExcel.Workbooks.Close
MsgBox "ok"



ps:csdn的论坛真奇怪,不能编辑自己的楼层,也不能指定楼层回复 --------------------编程问答-------------------- VBS是解释执行,别指望运行有多快了 --------------------编程问答-------------------- 既然 n(i)=i,那么n(e)=e
又要求:n(e1)+n(e2)+n(e3)+n(e4)+n(e5)+n(e6)=sum 
即:e1+e2+e3+e4+e5+e6=sum

For e6=9 To 0 step -1
For e5=sum-e6 To 0 step-1
For e4=sum-e6-e5 to 0 step-1
For e3=sum-e6-e5-e4 To 0 step-1
For e2=sum-e6-e5-e4 To 0 step-1
e1=sum-e6-e5-e4-e3-e2
If e1<e2  And e2< e3 And e3 < e4 And e4 < e5 And  e5 <e6 Then
oExcel.ActiveSheet.Cells(r1,2).Value=n(e1)
oExcel.ActiveSheet.Cells(r1,3).Value=n(e2)
oExcel.ActiveSheet.Cells(r1,4).Value=n(e3)
oExcel.ActiveSheet.Cells(r1,5).Value=n(e4)
oExcel.ActiveSheet.Cells(r1,6).Value=n(e5)
oExcel.ActiveSheet.Cells(r1,7).Value=n(e6)
r1=r1+1
End If
Next
Next
Next
next
Next
补充:VB ,  基础类
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,