配列 { 1, 1, 2, 2, 3, 3 } があるとしましょう。これらの要件を満たしながら、考えられるすべての組み合わせを試してみたいと思います。
- 最初の配列をどこにもコピーしない
- たとえば、112233 がある場合、必要なスワップは 1 つだけなので 121233 112323 に移動できますが、複数のスワップが必要なため 332211 にはなりません。
はい、これは可能です。そのようなシーケンスを検出するように自分でプログラミングしようとしましたが、次のような奇抜なパターンが得られます (1 はスワップを象徴し、0 は変更されていない要素を象徴します):
- 011000
- 001100
- 110000
など、すべての順列をアルゴリズム的に反復できる簡単な式が見つかりません。