设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: FBR2002
打印 上一主题 下一主题

[模块/函数] 带空格位置的组合算法

[复制链接]
11#
 楼主| 发表于 2007-10-12 15:20:20 | 只看该作者
谢谢cuxun帮忙!

我先学习消化一下。
12#
 楼主| 发表于 2007-10-12 22:12:25 | 只看该作者
谢谢cuxun的初稿!

按照你的思路,我觉得可以在W3前对第二行先进行选出5个的组合,然后:
1、选出刚好有5个数的行(因为有的行空格站位后实际的数没有5个);
2、把第一行(4个数)分别插入选出的行(得到需要的9个数)。

感觉这样在第1步会有许多无用的组合。不知我思路是否正确,有没有更简单的算法呢?
13#
 楼主| 发表于 2007-10-13 12:42:12 | 只看该作者
在网上找的组合程序,修改了一下

Function NFormM(ByVal iStar As Integer, iEnd As Integer, Num As Integer, Optional StrAll As String)
Dim i, j, k As Integer
Dim W1(14), W2(14), W3(14) As String
  If Num = 0 Then
      Me.Text30 = Me.Text30 & StrAll & vbCrLf
  Else
  k = 0
    For j = 1 To 14
        W1(j) = ""
        W1(j) = Nz(Me.Controls("W1" & Format(j, "00")), "N")
        W2(j) = ""
        W2(j) = Nz(Me.Controls("W2" & Format(j, "00")), "N")
        If W1(j) = "N" Then
           k = k + 1
           If W2(j) <> "N" Then
              W3(k) = W2(j)
           End If
        Else
           k = k + 1
           W3(k) = W1(j)
        End If
    Next j
      For i = iStar To iEnd
      DoEvents
        NFormM i + 1, iEnd, Num - 1, StrAll & W3(i) & " - "
      Next i
  End If
End Function

但还是没解决空格和必选项的问题
14#
 楼主| 发表于 2007-10-13 20:31:17 | 只看该作者
原帖由 cuxun 于 2007-10-13 19:07 发表
Dim i, j, k As Integer
这样只是给K定义了整型的值,i,j是没定义类型的.

Dim i As Integer
Dim  j As Integer
Dim  k  As Integer



问题不在这儿。好象可以用逗号分开定义的。

关键还是在组合函数的定义:NFormM i + 1, iEnd, Num - 1, StrAll & W3(i) & " - "
15#
 楼主| 发表于 2007-10-13 21:09:47 | 只看该作者
对组合函数的定义做了些改动,代上文本编号是乎是一种方法。

W204=0  W205=1  W208=1  W209=3  W211=0  
W204=0  W205=1  W208=1  W209=3  W213=1  
W204=0  W205=1  W208=1  W209=3  W214=1  
W204=0  W205=1  W208=1  W211=0  W213=1  
W204=0  W205=1  W208=1  W211=0  W214=1  
W204=0  W205=1  W208=1  W213=1  W214=1  
W204=0  W205=1  W209=3  W211=0  W213=1  
W204=0  W205=1  W209=3  W211=0  W214=1  
W204=0  W205=1  W209=3  W213=1  W214=1  
W204=0  W205=1  W211=0  W213=1  W214=1  
W204=0  W208=1  W209=3  W211=0  W213=1  
W204=0  W208=1  W209=3  W211=0  W214=1  
W204=0  W208=1  W209=3  W213=1  W214=1  
W204=0  W208=1  W211=0  W213=1  W214=1  
W204=0  W209=3  W211=0  W213=1  W214=1  
W205=1  W208=1  W209=3  W211=0  W213=1  
W205=1  W208=1  W209=3  W211=0  W214=1  
W205=1  W208=1  W209=3  W213=1  W214=1  
W205=1  W208=1  W211=0  W213=1  W214=1  
W205=1  W209=3  W211=0  W213=1  W214=1  
W208=1  W209=3  W211=0  W213=1  W214=1
16#
 楼主| 发表于 2007-10-14 13:28:45 | 只看该作者
已经解决。谢谢cuxun!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-10-6 20:24 , Processed in 0.092378 second(s), 28 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表