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

学习 时间:2026-03-30 15:46:15 阅读:927
求一款软件用于列举数字的排列组合,最好能像excel表格那种格式显示出来比如给出8个数字,选取其中5个进行组合,共有多少种组合,能一一列举出来,最好能由大到小或者由小到大依次排列,功能越多越好.如果Excel能做到也行,但我不知道怎么用,财富值之类的都小事儿,你要喜欢咱都给你

最佳回答

粗暴的乌龟

兴奋的小猫咪

2026-03-30 15:46:15

给你一段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 CNOFor j = 1 To tCM2(i,j) = CM(i)(j)Next jNext i'输出结果到表格Cells(1,t + 2) = "组合数"Cells(1,t + 3) = CNOIf CNO > 65536 Then CNO = 65536Range(Cells(1,1),Cells(CNO,t)) = CM2Cells(2,t + 2) = "运行时间(秒)"Cells(2,t + 3) = Timer - stEnd Sub'递归函数Sub nq(n,s,x,E,CNO,q(),CM())For i = s To E - x + nq(n) = iIf n = x Then '当前组合的数字已经选完CNO = CNO + 1CM(CNO) = qElsenq n + 1,i + 1,x,E,CNO,q(),CM()End IfNext iEnd Sub 再问: 虽然懂程序,但没用过这个,请具体指点怎么操作,我要把16个数字按5位组合,不连续的16个数,谢谢 再答: 16个数字?是包括两位数十进制数字,还是十六个十六进制数字?是16个数字选5个进行组合吗?那就不一定是5位数了?能否说明白一点,最好有举例说明你的要求。再问: 都是十进制数字比如:1;3;4;5;9;10;11;13;17;19;25;28;29;32;34;39;组合1 3 4 5 9,1 3 4 5 10,1 3 4 5 11,1 3 4 5 13。。。。。。依次排列下去,会有4368种组合,在excel表中一一列举出来 再答: 直接把第一行的参数改一下就可以,如下 Const t = 5, Z = 16再问: 哈哈哈,刚才没刷新网页,要的就是这个,非常感谢。。。。。100分你的了 再答: 做了个完整的带界面的,排列和组合都可以做。见附件!

最新回答共有2条回答

  • 斯文的玉米
    回复
    2026-03-30 15:46:15

    给你一段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 CNOFor j = 1 To tCM2(i,j) = CM(i)(j)Next jNext i'输出结果到表格Cells(1,t + 2) = "组合数"Cells(1,t + 3) = CNOIf CNO > 65536 Then CNO = 65536Range(Cells(1,1),Cells(CNO,t)) = CM2Cells(2,t + 2) = "运行时间(秒)"Cells(2,t + 3) = Timer - stEnd Sub'递归函数Sub nq(n,s,x,E,CNO,q(),CM())For i = s To E - x + nq(n) = iIf n = x Then '当前组合的数字已经选完CNO = CNO + 1CM(CNO) = qElsenq n + 1,i + 1,x,E,CNO,q(),CM()End IfNext iEnd Sub 再问: 虽然懂程序,但没用过这个,请具体指点怎么操作,我要把16个数字按5位组合,不连续的16个数,谢谢 再答: 16个数字?是包括两位数十进制数字,还是十六个十六进制数字?是16个数字选5个进行组合吗?那就不一定是5位数了?能否说明白一点,最好有举例说明你的要求。再问: 都是十进制数字比如:1;3;4;5;9;10;11;13;17;19;25;28;29;32;34;39;组合1 3 4 5 9,1 3 4 5 10,1 3 4 5 11,1 3 4 5 13。。。。。。依次排列下去,会有4368种组合,在excel表中一一列举出来 再答: 直接把第一行的参数改一下就可以,如下 Const t = 5, Z = 16再问: 哈哈哈,刚才没刷新网页,要的就是这个,非常感谢。。。。。100分你的了 再答: 做了个完整的带界面的,排列和组合都可以做。见附件!

上一篇 在一个生态系统中,最最基本最关键的组成成分是什么 A.生产者 B.消费者 C.分解者 D.

下一篇 新加坡人,为什么都会说汉语?