0

私はそれについて検索しようとしましたが、まだ決定的な答えを見つけていません。文字列配列を別の文字列配列のすべての組み合わせと比較するプログラムを作成しようとしていますが、これらの組み合わせの要素数は前の配列と同じです。説明をわかりやすくするために、n = {alpha,beta,gamma,delta,epsilon} と r ={beta,gamma,delta} という 2 つの文字列配列があるとします。ここでやりたいことは、セット「n」からすべての組み合わせ (各組み合わせの 3 つの文字列) を取得し、セット「r」をそれらすべてと比較することです。一致した場合は、何らかのアクションを実行します。すべての組み合わせを取得するには、式を適用する必要があることを認識しています。

                            nCr = n!/r!(n-r)!   (where 0<=r<=n)

私の場合、n = 5、r = 3 で、合計 10 の組み合わせが得られます。これらすべての組み合わせ (この場合は 10) を生成し、それらを配列 'r' と比較する必要があります。私はまだ出発点を持っていません。答えが得られるとは思っていませんが、それを実装する方法について少し光を当てます (おそらく再帰的に行われるのでしょうか?)。前もって感謝します。

4

1 に答える 1

0

コメントで提供した追加のコンテキストを考慮して、ここに私が提案するものがあります。

簡単にクエリできるようにnをセットに変換します。

String[] n = {"alpha", "beta", "gamma", "delta", "epsilon"};
Set<String> nset = new HashSet<String>();
nset.addAll(Arrays.asList(n));

rのすべての要素が含まれているかどうかを確認できます。

String[] r = {"beta", "gamma", "delta"};
if (nset.containsAll(Arrays.asList(r))) {
  // do something
}

これは、複数の異なるr配列で繰り返すことができ、 nのすべての可能なサブセットを反復して特定のrと比較するよりも効率的です。

于 2013-04-02T00:22:37.357 に答える