猿问

一个排列组合算法问题

问题:
有三个数组

a1 = ["i1","i2","i3","i4"...."ix"]; x为大于2的整数
a2 = ["k1","k2","k3","k4"...."ky"]; y为大于2的整数
a3 = ["m1","m2","m3","m4"...."mz"]; z为大于2的整数

从每个数组中抽取两个项,每个项只能用一次,组成长度为6的数组,比如:["i1","i2","m1","m2","k1","k2"],找出所有可能的数组。

要求:任意两个数组之间相同的项小于等于2。

比如

l1 = ["i1","i2","m1","m2","k1","k2"];
l2=["i1","i2","m3","m4","k5","k6"];

这两个数组相同项有两个,为"i1"和"i2"。

再比如

l1 = ["i1","i2","m1","m2","k1","k2"];
l2=["i1","i2","m1","m4","k5","k6"];

这两个数组相同项数量为3,为 "i1"、"i2"和"m1"。


守候你守候我
浏览 591回答 2
2回答

白衣染霜花

以下为Java伪代码使用三阶循环,剔除不满足条件(a == b && b == c)的数据for(int&nbsp;a=0;&nbsp;a<=&nbsp;La;&nbsp;a++)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;b=0;&nbsp;b<=Lb;&nbsp;b++)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;c=0;&nbsp;c<=Lc;&nbsp;c++)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;a&nbsp;==&nbsp;b&nbsp;&&&nbsp;b&nbsp;==c&nbsp;){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.add(&nbsp;new&nbsp;Object(Aa,&nbsp;Bb,&nbsp;Cc)&nbsp;); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;} }
随时随地看视频慕课网APP

相关分类

Python
我要回答