| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1304 人关注过本帖
标题:1---10的组合有多少种
只看楼主 加入收藏
壮志在我胸
Rank: 3Rank: 3
来 自:邯郸
等 级:论坛游侠
威 望:1
帖 子:158
专家分:125
注 册:2009-9-7
结帖率:75%
收藏
已结贴  问题点数:10 回复次数:12 
1---10的组合有多少种
如何用VB实现1----10的组合,并显示出来
种数应该是10的阶乘。
搜索更多相关主题的帖子: 如何 
2009-12-30 21:34
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:3 
怎么的组合法子?

授人于鱼,不如授人于渔
早已停用QQ了
2009-12-31 11:48
壮志在我胸
Rank: 3Rank: 3
来 自:邯郸
等 级:论坛游侠
威 望:1
帖 子:158
专家分:125
注 册:2009-9-7
收藏
得分:0 
1 2 3 4 5 6 7 8 9 10
1 3 2 4 5 6 7 8 9 10
。。。。
以不同的顺序排列
怎么用vb实现???
2009-12-31 12:32
bczgvip
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:66
帖 子:1310
专家分:5312
注 册:2009-2-26
收藏
得分:3 
规律呢?
2009-12-31 12:38
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 

用前面我那个魔方阵程序改的,希望你能看懂.
生成了数据文件,非常抱歉的我不能发出来.超过了 100M
达到了: 107 MB (112,492,800 字节)

数据文件,正常的话,一般在 VB6 的安装目录里面.

------------------运行结果--------------------------------
共 3628800 组结果

--------------------窗体说明------------------------------
一个文本框,一个标签,一个按钮

--------------------代码如下-------------------------------
Option Explicit

Private Sub Command1_Click()
Dim a As Long, b As Long, c As Long, d As Long
Dim e As Long, f As Long, g As Long, h As Long, i As Long
Dim j As Long
Dim k As Long, m As Long
Dim n(1 To 10) As Long
Dim p As String


Open "test.txt" For Output As #1

p = ""
'9个循环变量
For a = 1 To 10
    n(1) = a
    For b = 1 To 10

    n(2) = b
    If Not IS重复(2, n()) Then      '测试是否重复
        For c = 1 To 10
            n(3) = c
            If Not IS重复(3, n()) Then      '测试是否重复
            For d = 1 To 10
                Label1.Caption = a & "  " & b & "  " & c & "  " & d         '进度
                DoEvents
                n(4) = d
                If Not IS重复(4, n()) Then      '测试是否重复
                For e = 1 To 10
                    n(5) = e
                    If Not IS重复(5, n()) Then      '测试是否重复
                    For f = 1 To 10
                        n(6) = f
                        If Not IS重复(6, n()) Then      '测试是否重复
                        For g = 1 To 10
                            n(7) = g
                            If Not IS重复(7, n()) Then      '测试是否重复
                            For h = 1 To 10
                                n(8) = h
                                If Not IS重复(8, n()) Then      '测试是否重复
                                For i = 1 To 10
                                    n(9) = i
                                    If Not IS重复(9, n()) Then      '测试是否重复
                                    For j = 1 To 10
                                        n(10) = j
                                        If Not IS重复(10, n()) Then      '测试是否重复
                                            m = m + 1       '计数
                                            
                                            Print #1, a & "  " & b & "  " & c & "  " & d & "  " & e & _
                                            "  " & f & "  " & g & "  " & h & "  " & i & "  " & j
                                            
                                            '把结果放到文本框中
                                            'p = p & a & " " & b & " " & c & " "
                                            'p = p & d & " " & e & " " & f & " "
                                            'p = p & g & " " & h & " " & i & " "
                                            'p = p & j & vbCrLf
                                            'Text1.Text = p
                                            'DoEvents
                                        End If
                                    Next j
                                    End If
                                Next i
                                End If
                            Next h
                            End If
                        Next g
                        End If
                    Next f
                    End If
                Next e
                End If
            Next d
            End If
        Next c
        End If
    Next b
Next a

Close #1
p = p & vbCrLf
p = p & "共 " & m & " 组结果"
Text1.Text = p

MsgBox "共 " & m & " 组结果"

End Sub


Public Function IS重复(cs As Long, n() As Long) As Boolean
Dim o1 As Long

'初始化为不重复
IS重复 = False
'查找最后一个数据是否与前面的数据相同
For o1 = 1 To cs - 1
        If n(o1) = n(cs) Then   '找到相同,
            IS重复 = True       '重复了
            Exit For
        End If
Next o1

End Function


授人于鱼,不如授人于渔
早已停用QQ了
2009-12-31 12:57
壮志在我胸
Rank: 3Rank: 3
来 自:邯郸
等 级:论坛游侠
威 望:1
帖 子:158
专家分:125
注 册:2009-9-7
收藏
得分:0 
看不懂,大哥你能不能简单的说一下思路呢
2009-12-31 18:21
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
10个变量,
10个循环套到一起.
每次循环时,都检查一下,是否有重复的数据.如果没有.
那么就把这10个数排列出来.

检查重复,简化只检查最后一个数是否与前面的数重复.
因为是每个变量时都进行了调用.检查最后一个数时,已确保了前面的数不存在重复.

        For c = 1 To 10                 '循环开始
            n(3) = c                    '把这个值放到数组元素 3 里面,用来测试重复
            If Not IS重复(3, n()) Then      '测试是否重复,如果重复,返回的结果就是 true ,加 not 后,只有不重复时,才执行里面的.
            For d = 1 To 10             '继续套下一个循环 ............



授人于鱼,不如授人于渔
早已停用QQ了
2010-01-01 09:01
福尔摩斯
Rank: 5Rank: 5
等 级:贵宾
威 望:12
帖 子:4011
专家分:370
注 册:2006-8-15
收藏
得分:3 
以下是引用壮志在我胸在2009-12-31 18:21:46的发言:

看不懂,大哥你能不能简单的说一下思路呢
10个位置10人, 有几种排列?

第1个人先排, 那么它可选择的位置有10个
第2个人排列, 那么它可选择的位置只有9个 。。。。。。

所以全部排完, 应该是 10×9×8×...×2×1 = 10!(10阶乘)

[ 本帖最后由 福尔摩斯 于 2010-1-1 19:57 编辑 ]

自我放逐。。。
2010-01-01 19:55
壮志在我胸
Rank: 3Rank: 3
来 自:邯郸
等 级:论坛游侠
威 望:1
帖 子:158
专家分:125
注 册:2009-9-7
收藏
得分:0 
论坛保密情况不好 啊!本人根本没有结贴,是谁结的帖呢
2010-01-12 17:51
壮志在我胸
Rank: 3Rank: 3
来 自:邯郸
等 级:论坛游侠
威 望:1
帖 子:158
专家分:125
注 册:2009-9-7
收藏
得分:0 
是谁结的帖,给我站出来!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2010-01-12 17:57
快速回复:1---10的组合有多少种
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024001 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved