【发布时间】:2016-12-08 05:45:03
【问题描述】:
我正在尝试编写一个算法,告诉我可以使用来自多个值集的项目生成多少对。例如,我有以下集合: {1,2,3} {4,5} {6}
从这些集合中我可以生成 11 对: {1,4}, {1,5}, {1,6}, {2,4}, {2,5}, {2,6}, {3,4}, {3,5}, {3 ,6}, {4,6}, {5,6}
我写了以下算法:
int result=0;
for(int k=0;k<numberOfSets;k++){ //map is a list where I store all my sets
int size1 = map.get(k);
for(int l=k+1;l<numberOfSets;l++){
int size2 = map.get(l);
result += size1*size2;
}
}
但正如您所见,该算法的可扩展性不是很强。如果集合的数量增加,算法开始表现很差。 我错过了什么吗?,有没有一种算法可以帮助我解决这个问题?我一直在寻找组合和排列算法,但我不太确定这是否是正确的路径。
非常感谢您
【问题讨论】:
-
为什么不只存储每个集合中唯一元素的数量?那么它可能会提高你的表现。顺便说一句,您在寻找独特的配对吗?那么您的代码将无法正确输出对数。
标签: java algorithm combinations permutation