-1
最近我遇到了一个算法问题,它要求从给定的集合中生成唯一的子集。 假设集合为 S={1, 2, 3, 4}
其中n=4
(元素数量)。 然后结果应该生成所有的子集: - {(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}如何生成一个集合的所有唯一子集?
#include<iostream>
int main()
{
int k;
std::cin>>k;
for(long int i=1;i<=k;i++)
{
for(long int j=i+1;j<=k;j++)
{
std::cout<<i<<" "<<j<<"\n";
}
}
return 0;
}
我有一个为O(n^2)的方法,但该合同引起的当数大 对于n = 1000需要花费大量的时间,因为它必须产生499,500元的问题!
有没有人有更好的解决方案复杂性明智?算法将不胜感激!
“子集”,你的意思是“独特的元素对”?这从根本上说是一个n^2问题,你不会找到一种算法能够更快地完成任务。 – Alexander
是的,我的意思是。 是这样吗? :-( –
如果您不必生成所有配对,并且可以更好地订购代,则只能做得更好。 – jwimberley