关于VB二维数组选择不重复排列的问题

3*4=14个数组元素:a(-3,0)a(-3,1)a(-3,2)a(-3,3)a(-2,0)a(-2,1)a(-2,2)a(-2,3)a(-1,0)a(-1,1)a(-... 3*4=14个数组元素 :
a(-3,0) a(-3,1) a(-3,2) a(-3,3)
a(-2,0) a(-2,1) a(-2,2) a(-2,3)
a(-1,0) a(-1,1) a(-1,2) a(-1,3)
我要循环打出所有的三个一组的组合
比如:
第一个:a(-3,0) a(-2,1) a(-1,2)
第二个:a(-3,0) a(-2,1) a(-1,3)
第三个:a(-3,0) a(-2,2) a(-1,3)
第四个:a(-3,0) a(-2,2) a(-1,0)
......
每一组中下标不重复
我总共要从80*100的矩阵中找出个数为80个的所有组合形式。
展开
 我来答
网海1书生
科技发烧友

2017-02-28 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26228

向TA提问 私信TA
展开全部
从100个数中取出80个数进行不重复的排列组合,这样的组合总数为:
100 × 99 × 98 × 97 × …… × 22 × 21
这个运算结果有140位数,这是个超级天文数字啊,要知道宇宙的直径如果用米来做单位,也只有20位数啊,要是真把你说的这个数组的所有排列组合列出来,全世界的内存和硬盘的容量加起来也不够用啊!

你可以去自己验证一下啊,比如你题目中说的3*4的数组有24种组合,5*8的数组立刻爆升为6720种,10*16则是290多亿了!
你还要这么做吗?我本来是准备给你写代码的,后来稍微运算了一下,吓了一跳啊有木有!
追问
没有这么多吧,你可能没理解我的意思。
我公司有80个机台(1-80),假设同期有100个订单(1-100)排队等着开机。因为每种机台参数和改订单成本不一样,所以我要把所有可能列出来,然后计算总的效益,选效益最高的。这就是排单计划。比如:第一个机台选择第一个花型,第二个机台选择第二个花型.....,一个机台不可能同时对应两个订单,一个订单也不可能对应两个机台。
追答
那么你可以这样来看:
第1个机台,它的订单选择的可能性是100,这个没疑问吧?
第2个机台,在第1个机台已选定1个订单的情况下,剩下的选择可能性就变为99,这个也能理解吧?
依此类推,到了第80个机台,剩下的选择机会就变为21了,这个只要是小学生都能算出来是吧?
那么,要把所有的不重复的排列组合列出来,不就是
100 × 99 × 98 × 97 × …… × 22 × 21
吗?
就好比6位数的彩票,所有号码的个数为10的6次方,这里是允许数字重复的,如果不允许数字重复,就是10×9×8×7×6×5=151200个。
如果把这6位数的每一位数看作一个机台,就是6个机台,里面的每个数字(从0到9共10个)可以看作是订单号,也就是10个订单,这样排列组合出来,不就是151200个组合吗?
现在把机台数扩大为80台,订单数扩大为100个,你再去算算?
sbj518
2017-02-28 · TA获得超过4.4万个赞
知道大有可为答主
回答量:1.1万
采纳率:81%
帮助的人:5275万
展开全部
你的意思也就是从8000个数据中,找到80个所有的组合形式了?
追问
我公司有80个机台(1-80),假设同期有100个订单(1-100)排队等着开机。因为每种机台参数和改订单成本不一样,所以我要把所有可能列出来,然后计算总的效益,选效益最高的。这就是排单计划。比如:第一个机台选择第一个花型,第二个机台选择第二个花型.....,一个机台不可能同时对应两个订单,一个订单也不可能对应两个机台。
追答
那最后还是会有20个订单没有机台。对吧?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式