首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

超难有关问题,不定层多重循环

2012-03-11 
超难问题,不定层多重循环!如图所示,list里可以让用户输入一项的最小值和最大值然后枚举所有行的组合,而每

超难问题,不定层多重循环!


如图所示,list里可以让用户输入一项的最小值和最大值
然后枚举所有行的组合,而每行的取值范围就是最大值和最小值之间

也就是说枚举list所有行里的数据组合,每行只取一个值,并且要每一个值都要取一遍

比如按我图里所输入的数据,那么所有可能的组合结果应该是这样的
2 4 6
2 4 7
2 5 6
2 5 7
3 4 6
3 4 7
3 5 6
3 5 7

顺便附上我写的,当然是有问题的
http://www.520wife.com/1.rar(我那个最后面一列是显示当前枚举到那个值的)
在家折腾了三天了,就是搞不定,望高手帮忙解决,不胜感激!


[解决办法]
我的方案是增加两个类模块,使用自定义集合实现这个功能.
LoopItem负责枚举某项数据
LoopItems负责存储所有LoopItem,并对其进行从后往前的循环枚举.
因为集合可以方便的添加元素,所以,使用起来基本不受限制.

Form1代码

VB code
Option ExplicitPrivate mcolItems As New LoopItemsPrivate Sub Command1_Click()    With mcolItems        Call .Clear                Dim li As ListItem        For Each li In PYLv.ListItems            Call .AddNew(li.Text, li.ListSubItems(1).Text)        Next                Do            Debug.Print .ToString()        Loop Until .EnumNext()    End WithEnd SubPrivate Sub Form_Load()End SubPrivate Sub PyAdd_Click()    With PYLv        Dim a As Long        a = .ListItems.Count + 1                .ListItems.Add , , TMin.Text        .ListItems(a).SubItems(1) = TMax.Text    End WithEnd SubPrivate Sub PYLv_KeyDown(KeyCode As Integer, Shift As Integer)    If KeyCode = 46 Then        PYLv.ListItems.Remove (PYLv.SelectedItem.Index)    End IfEnd Sub 

热点排行