2012-10-31 16 views
5

私はCardインスタンスの配列を持っています。この基準で考えられるすべての組み合わせを見つける方法は?

Card[] allCards; 

Iは、以下の条件の下で、これらのカードのすべての可能な組み合わせを得ることになっています:

  • 組み合わせの全てが、3枚以上のカードを持っている必要があります。
  • 組み合わせにはカードの制限がありません(合計15枚のカードがある場合、15枚のカード、13枚、10枚など)。

大学では、この仕事をより簡単に行うことができるファンシーライブラリを使用することは想定されていません。

私はペアでやったことがありますが、制限はないと考えて、私が通常行うアルゴリズムはうまくいかないでしょう。

それはかなり彼らはpythonのためにここで尋ねるものです:Find all possible combinations

任意のアイデア?私はコードや何も望んでいません - 私はちょうどアルゴリズム/アイデアを失っています。

私の問題(より詳細な)

私は2つのループ(他の内1)を行うことでペアを作ることができます。 3つのループ(別のループの中で1つのループ)を持つことで、私はトリプレットを作ることができます。

しかし、私はこの特定の問題を行う方法がわからないので:

  • 配列は、15枚のカードを持っている場合はどうすれば?私は15ループを書くことができません...
  • もちろん、私は14,13,12ループに行く必要があります...(すべての組み合わせがそれぞれ15個の要素ではないので、14個の組み合わせがありますこの15要素配列で作業する場合、13,12要素)

私はいくつかの組み合わせを見つけることができますが、動的にはできません。

+0

効率性を心配する前に(少なくとも入力配列が小さい場合は)機能するものを手に入れることをお勧めします。すべてのペアを生成することができれば、それを使ってすべてのトリプルを生成できますか? –

+0

コードでない場合は、探しているものが不明です。あなたはすでに必要なものを言及しています:Googleとスタックオーバーフローで複数の結果をひっくり返す "すべての組み合わせのリスト"。あなたが問題を解決できない具体的な理由はありますか? – Grambot

+1

「これらのカードのすべての可能な組み合わせを得る」という意味は正確に何ですか?結果を出力するか、単純に数を表示する必要がありますか?そこには大きな違いがあります。 –

答えて

1

紙と鉛筆のエクササイズ:バック離れ分間Java構文から

てみましょう。 5枚のカードの例を挙げると、エースからダイヤモンド10枚までです。可能なすべてのペアをリストします。 (ヒント:10個あります)

ペアリストを使用して、可能なすべてのトリプルをリストします。今、トリプルのリストを使用して

、4

のすべての組み合わせをリスト今度はそれをコーディングしてみましょう:

あなたが使用して、コンパイル時に組み合わせの最大の長さを知らないので、ループは問題を解決しません。一方、この問題は再帰に役立ちます。まずは配列の配列を返す関数Card[][] getCombinations(Card[] cards)があると仮定して始めましょう。だから我々は

Card[] cards = new Card[15]; 
// initialize individual Card objects 
Card[][] combinations = getCombinations(cards); 

combinations[i]を呼び出す場合は、生成された組み合わせのいずれかが含まれています。

ここで、簡単にするために、getCombinations()はペアを返すとします。すべての可能なトリプルを作成するためにこれらのペアをどのように使用できますか?

+0

私は少し失われています。 * getCombinations()*はすべてのペアの行列を返します。しかし、よく、私はまだそれを採用すべきか分かりません:( – Voldemort

+0

@Omega私の編集した答えを見てください。鉛筆と紙で他の例を試してみてください。問題が発生しました。 –

+0

これはうまくいきました。あなたが気にしていたとおりではないかもしれません(XDとして遅いので) – Voldemort

関連する問題