从16个数任取4个组成一个数
我想编个程序
统计出有多少种组合(不是排列哦)
并把所有可能的组合列出来
4个数不管怎么排列都算一种组合。
例如:
1234
1243
1324
1342
-----
4312
4321
共24个数只当作一种组合
我只要写出1234就可以了。
也就是说只列出从小到大排列的组合。

解决方案 »

  1.   

    p(?,?)
    c(?,?)
    忘记了,高中数学课本里面就有的算法hoho
      

  2.   

    统计有多少种组合? 这需要编程吗?直接计算不就成了  
    组合数=16*15*14*13还是你想列出所有的组合?
    那用4个循环就行了for i=1 to 13
    for j=2 to 14
    for k=3 to 15
    foi l=4 to 16
      print i,j,k,l
    next l
    next k
    next j
    next i
      

  3.   

    你那是排列来的,我会啊
    for i1=1 to 16
    for i2=1 to 16
    for i3=1 to 16
    for i4=1 to 16
    if(i1<>i2)and(i1<>i3)(i1<>i4)and(i2<>i3)and(i2<>i4)and(i3<>i4) then
    print i1;i2; i3; i4
    end if
    next i4
    next i3
    next i2
    next i1
    这代码比你的好吧
    我要的是组合啊。
    看清楚我的问题先
      

  4.   

    这是个阶乘的问题
    for i1=1 to 16
    for i2=i1 to 16
    for i3=i2 to 16
    for i4=i3 to 16
    print i1;i2; i3; i4
    end if
    next i4
    next i3
    next i2
    next i1
      

  5.   

    试试这个:要一个多行带滚动条的文本框.
    Option Explicit
    Private Sub Command1_Click()
      Dim i1, i2, i3, i4 As Integer
      Dim Cou As Long
      Cou = 0
      Text1.Text = ""
      Dim Maxn As Integer
      Maxn = 12
      For i1 = 1 To Maxn - 3
      For i2 = i1 + 1 To Maxn - 2
      For i3 = i2 + 1 To Maxn - 1
      For i4 = i3 + 1 To Maxn
      Text1.Text = Text1.Text & i1 & ";" & i2 & ";" & i3 & ";" & i4 & "  "
      Cou = Cou + 1
      Next i4
      Next i3
      Text1.Text = Text1.Text & vbCrLf
      Next i2
      Text1.Text = Text1.Text & vbCrLf
      Next i1
      Text1.Text = Text1.Text & "以上组合共有:" & Cou
    End Sub
    其中maxn我设为12,如设成16会算很久,我机器慢,呵呵.
      

  6.   

    To: Anthorny(浪子) 
    根据你写的这段程序,
    假设i1=1,i2=2,i3=3,i4=4时,条件满足,打印出来的结果是1,2,3,4
    假设i1=4,i2=3,i3=2,i4=1时,条件也满足,打印出来的结果是4,3,2,1
    难道你是想要4个数的排列?
    我不明白
    看来我还是没有理解你问的问题引用---------------
    回复人: Anthorny(浪子) ( ) 信誉:100
    你那是排列来的,我会啊
    for i1=1 to 16
    for i2=1 to 16
    for i3=1 to 16
    for i4=1 to 16
    if(i1<>i2)and(i1<>i3)(i1<>i4)and(i2<>i3)and(i2<>i4)and(i3<>i4) then
    print i1;i2; i3; i4
    end if
    next i4
    next i3
    next i2
    next i1
    这代码比你的好吧
    我要的是组合啊。
    看清楚我的问题先
      

  7.   

    看到 sth1002(小虫) 写的,才发觉我写的问题所在,我只是考虑到了i=1时候的情况
    正确的情况应该是把
    for i=1 to 13
    for j=2 to 14
    for k=3 to 15
    foi l=4 to 16
    改成
    for i=1 to 13
    for j=i+1 to 14
    for k=j+1 to 15
    foi l=k+1 to 16