最近、私は与えられたセットからユニークなサブセットを生成するように求めるアルゴリズム上の問題に遭遇しました。 セットが S={1, 2, 3, 4}
の場合、n=4
(要素数)とします。 結果はすべてn*(n-1)/2
のサブセットを生成するはずです。 - {(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)のアプローチを持っていますが、数字は、それは499500個の要素を生成しなければならなかったので、それは多くの時間を要し、N = 1000のため 大きい場合に生じる問題があります!
誰にでもより優れたソリューションの複雑さがありますか?アルゴリズムが評価されるだろう!
「サブセット」とは、「固有の要素のペア」を意味しますか?これは基本的にn^2の問題です。あなたはもっと速くそれを行うことができるアルゴリズムを見つけることはできません。 – Alexander
はい、私はそれを意味しました。 そうですか? :-( –
すべてのペアを生成する必要がなく、世代の順番を整えることができれば、より良い結果が得られます。 – jwimberley