如何计算阵列的所有产品并为每种组合返回两种产品?
数组:
[2, 2, 3, 4]
输出:
1, 2*2*3*4
2, 2*3*4
2*2, 3*4
2*2*3, 4
2*2*4, 3
2*3, 2*4
我希望我的输出包含所有这些内容。任何想法,伪代码,代码都是受欢迎的。
答案 0 :(得分:3)
由于某些因素会重复出现,因此您需要考虑其多重性,以避免重复某些产品。
根据需要对数组进行排序并计算多重性(连续相等的值)。
然后,假设k个具有相应多重性Mk的不同值,您将模拟k个嵌套循环,每个循环从0到Mk(包括0和Mk)。对于此仿真,请考虑所有初始化为0的计数器数组。然后递增第一个计数器,当它达到其最大值时,重置它并进入下一个计数器。如果下一个计数器达到最大值,重置它并进入下一个...
使用这些计数器作为因子的指数并计算产品。第二个数字是所有因子除以第一个数字的乘积。
E.g。
Values: 2, 3, 4
Multiplicities: 2, 1, 1
Counters:
000
100
200
010
110
210
001
101
201
011
111
211
First numbers:
1
2
2²
3
2.3
2²3
4
2.4
2²4
3.4
2.3.4
2²3.4
Second numbers = 2²3.4 / First numbers
产品对的总数等于乘数加1的乘积,(M1 + 1)(M2 + 1)...(Mk + 1)。