自己做了 --排列组合--来偷懒,看看有没有可以优化一下的
vb吧
全部回复
仅看楼主
level 5
HadesMyson 楼主
2018年06月03日 08点06分 1
level 5
HadesMyson 楼主
没人吗?[怒]
2018年06月03日 08点06分 2
level 15
我很好奇你把Variant当成什么意思了[滑稽]
优化建议:不要用最终公式(带阶乘计算的公式)来进行计算,直接用一次循环乘除法就可以得到结果了,比如排列数A(n,m):(注:只要判断n>=m成立即可进行计算,无需进一步区分n和m是否相等)
p=1
for i=n-m+1 to n
p=p*i
next i
组合数C(n,m):(注:n和m可以相等,m还可以等于0呢,排除掉干什么[滑稽]
p=1
for i=1 to m
p=p*(n-i+1)\i
next i
2018年06月03日 13点06分 3
variant不是变体型吗?我不会赋值时就用它可好用了[哈哈],0的问题是我忽略了[汗],反正谢谢大佬教导[真棒][真棒][真棒]
2018年06月06日 14点06分
@HadesMyson 能确定数据类型的情况下,尽量不要用变体
2018年06月07日 02点06分
请问零0和欧o的组合,要求12位,一个有多少个组合?怎么可以得出所有组合?
2020年11月10日 03点11分
level 11
要充分使用自定义函数来增加程序的模块化,既便于编写,又便于阅读。
2018年06月07日 02点06分 4
程序要有必要的注释,不然看的人一头雾水。
2018年06月07日 02点06分
level 5
HadesMyson 楼主
哦(´-ω-`)
2018年06月07日 09点06分 5
level 6
有,把“出入”改为“输入”
2018年07月13日 11点07分 6
level 6
很好奇你为什么要把 x, y 定义为 Variant?
2018年07月13日 11点07分 7
level 8
预处理阶乘及其逆元,O(1)查表,[滑稽]
2018年07月14日 09点07分 8
level 1
请问零0和欧o的组合,要求12位,一个有多少个组合?怎么可以得出所有组合?
2020年11月10日 03点11分 9
你挖坟了……其实你这个问题不属于排列组合,如果把字母o换成数字1,你这就是问“12位的二进制数有多少个,每个数分别是多少”
2020年11月10日 03点11分
@初音✨七奈 😁没太注意时间,不好意思,有方法得出所有组合吗?比如用excel
2020年11月10日 05点11分
@Sunshine_sqh 循环穷举,从0循环到2^12-1,把每个数都转换成二进制数(如果不足12位,左边用0补齐),并且把1替换成o,就是结果了
2020年11月10日 07点11分
1