我正在寻找一种方法来生成一些(默认为6个)方程式,其中所有子项都是唯一的。 例如,
a+b+c=50
d+e+f=50
g+h+i=50
a, d and g have to be distinct.
a+b and d+e have to be distinct.
e+f and h+i have to be distinct.
a+c and d+f have to be distinct.
但是,a + b和e + f可以是相同的。所以我只关心对齐参数的子集。
我只能找到检查的方法是否某些序列是不同的,但我没有发现如何生成这样的序列..
答案 0 :(得分:0)
你没有说明你是否需要它是一个随机序列,所以假设这不是必需的。
一个简单的方法就是:
1 + 2 + 47 = 50
3 + 4 + 43 = 50
5 + 6 + 39 = 50
7 + 8 + 35 = 50
9 + 10 + 31 = 50
11 + 12 + 27 = 50
前两个数字是2个最小的可用数字,第三个数字是最终总和 - 这些数字。
a和b总是在增加,c总是在减少
a + b总是在增加,b + c和a + c总是在减少
你可以在循环中以这种方式生成它。
在评论后编辑它必须是随机序列:
可能你可以创建几个集合(某种hashset / hashmap是最合适的)
你会以这种方式生成随机三元组:
但是,我不确定这种方法是否可以保证您获得结果(特别是在小额最终金额中)。
所以,我会添加一个计数器,如果连续多次尝试都没有成功,那么我会切换到暴力方法(如果最终总和很小则不应该是问题,另一方面如果是最终总和很大。)
总的来说,表现应该很好。