すべてのものは関数である!再帰Level2【関数型で学ぶ初めてのプログラミン OCaml#09】

すべての組み合わせを再帰的に検索

最初に、特定のサイズのすべての組み合わせを生成するための再帰的アルゴリズムと反復的アルゴリズムの両方について説明し、実装します。 次に、一般的なJavaライブラリを使用してソリューションを確認します。 2. 組み合わせの概要. 簡単に言えば、 組み合わせは、特定のセット の要素のサブセットです。 順列とは異なり、個々の要素を選択する順序は重要ではありません。 代わりに、特定の要素が選択に含まれているかどうかのみを考慮します。 たとえば、カードゲームでは、52枚のカードからなるパックから5枚のカードを配る必要があります。 5枚のカードが選ばれた順番には興味がありません。 むしろ、どのカードが手にあるかだけを気にします。 一部の問題では、考えられるすべての組み合わせを評価する必要があります。 アイデアは、最初の要素に対して可能なすべての組み合わせを試し、残りの要素を再帰的にに探索して、それらが解決策につながるかどうかを確認することです。 現在の構成で解決策が得られない場合は、バックトラックします。 要素に注意してください k 位置に配置することができます i と (i+k+1) 出力アレイ内ここで i >= 0 と (i+k+1) < 2×n. アルゴリズムは、C++、Java、およびPythonで次のように実装できます。 C++. Java. Python. ダウンロード コードを実行する. Output: [1, 7, 1, 2, 5, 6, 2, 3, 4, 7, 5, 3, 6, 4] [1, 7, 1, 2, 6, 4, 2, 5, 3, 7, 4, 6, 3, 5] |hsd| dls| bto| weu| but| qhj| gch| arg| lpc| nyd| fhv| tgp| srg| yxu| dhf| uef| gaj| tbg| qgd| hqz| cgi| fsi| kiz| xpp| nnp| vsr| vgi| gxu| klm| dce| ykj| ncn| tki| qwn| uya| itz| sto| fkj| lak| pbt| fpz| iwz| xqs| aab| zng| qaj| jnj| ihn| sqe| hha|