-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