求一款软件用于列举数字的排列组合,最好能像excel表格那种格式显示出来比如给出8个数字,选取其中5个进行组合,共有多少种组合,能一一列举出来,最好能由大到小或者由小到大依次排列,功能
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/01 02:02:27
![求一款软件用于列举数字的排列组合,最好能像excel表格那种格式显示出来比如给出8个数字,选取其中5个进行组合,共有多少种组合,能一一列举出来,最好能由大到小或者由小到大依次排列,功能](/uploads/image/z/1047582-54-2.jpg?t=%E6%B1%82%E4%B8%80%E6%AC%BE%E8%BD%AF%E4%BB%B6%E7%94%A8%E4%BA%8E%E5%88%97%E4%B8%BE%E6%95%B0%E5%AD%97%E7%9A%84%E6%8E%92%E5%88%97%E7%BB%84%E5%90%88%2C%E6%9C%80%E5%A5%BD%E8%83%BD%E5%83%8Fexcel%E8%A1%A8%E6%A0%BC%E9%82%A3%E7%A7%8D%E6%A0%BC%E5%BC%8F%E6%98%BE%E7%A4%BA%E5%87%BA%E6%9D%A5%E6%AF%94%E5%A6%82%E7%BB%99%E5%87%BA8%E4%B8%AA%E6%95%B0%E5%AD%97%2C%E9%80%89%E5%8F%96%E5%85%B6%E4%B8%AD5%E4%B8%AA%E8%BF%9B%E8%A1%8C%E7%BB%84%E5%90%88%2C%E5%85%B1%E6%9C%89%E5%A4%9A%E5%B0%91%E7%A7%8D%E7%BB%84%E5%90%88%2C%E8%83%BD%E4%B8%80%E4%B8%80%E5%88%97%E4%B8%BE%E5%87%BA%E6%9D%A5%2C%E6%9C%80%E5%A5%BD%E8%83%BD%E7%94%B1%E5%A4%A7%E5%88%B0%E5%B0%8F%E6%88%96%E8%80%85%E7%94%B1%E5%B0%8F%E5%88%B0%E5%A4%A7%E4%BE%9D%E6%AC%A1%E6%8E%92%E5%88%97%2C%E5%8A%9F%E8%83%BD)
求一款软件用于列举数字的排列组合,最好能像excel表格那种格式显示出来比如给出8个数字,选取其中5个进行组合,共有多少种组合,能一一列举出来,最好能由大到小或者由小到大依次排列,功能
求一款软件用于列举数字的排列组合,最好能像excel表格那种格式显示出来
比如给出8个数字,选取其中5个进行组合,共有多少种组合,能一一列举出来,最好能由大到小或者由小到大依次排列,功能越多越好.如果Excel能做到也行,但我不知道怎么用,财富值之类的都小事儿,你要喜欢咱都给你
求一款软件用于列举数字的排列组合,最好能像excel表格那种格式显示出来比如给出8个数字,选取其中5个进行组合,共有多少种组合,能一一列举出来,最好能由大到小或者由小到大依次排列,功能
给你一段VBA代码吧,放入EXCEL的代码页中(ALT+F11),运行主程序MYCMB()就会把结果输出到表格中.
Sub MYCMB()
Const t = 5,Z = 8 '从8个数字中取5个进行组合
Dim CNO,q(),CM(),CM2()
st = Timer
'为保证速度,用数组存储结果
ReDim q(1 To t)
ReDim CM(1 To WorksheetFunction.combin(Z,t))
nq 1,1,t,Z,CNO,q(),CM()
'转二维数组,以便EXCEL存放
ReDim CM2(1 To CNO,1 To t)
For i = 1 To CNO
For j = 1 To t
CM2(i,j) = CM(i)(j)
Next j
Next i
'输出结果到表格
Cells(1,t + 2) = "组合数"
Cells(1,t + 3) = CNO
If CNO > 65536 Then CNO = 65536
Range(Cells(1,1),Cells(CNO,t)) = CM2
Cells(2,t + 2) = "运行时间(秒)"
Cells(2,t + 3) = Timer - st
End Sub
'递归函数
Sub nq(n,s,x,E,CNO,q(),CM())
For i = s To E - x + n
q(n) = i
If n = x Then '当前组合的数字已经选完
CNO = CNO + 1
CM(CNO) = q
Else
nq n + 1,i + 1,x,E,CNO,q(),CM()
End If
Next i
End Sub