求一款软件用于列举数字的排列组合,最好能像excel表格那种格式显示出来

比如给出8个数字,选取其中5个进行组合,共有多少种组合,能一一列举出来,最好能由大到小或者由小到大依次排列,功能越多越好。如果Excel能做到也行,但我不知道怎么用,求高... 比如给出8个数字,选取其中5个进行组合,共有多少种组合,能一一列举出来,最好能由大到小或者由小到大依次排列,功能越多越好。如果Excel能做到也行,但我不知道怎么用,求高手指点,财富值之类的都小事儿,你要喜欢咱都给你 展开
 我来答
tf日出
2013-05-01 · TA获得超过1076个赞
知道小有建树答主
回答量:648
采纳率:0%
帮助的人:257万
展开全部
给你一段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
更多追问追答
追问
虽然懂程序,但没用过这个,请具体指点怎么操作,我要把16个数字按5位组合,不连续的16个数,谢谢
追答
16个数字?是包括两位数十进制数字,还是十六个十六进制数字?是16个数字选5个进行组合吗?那就不一定是5位数了?能否说明白一点,最好有举例说明你的要求。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式