[PS] 2014 Daejeon 6899 Permutation Cycles


これは数字のループの問題です.3 2 7 8 1 4 5 8の数字が並んでいる場合は、順番に番号が付けられます.
三は一、二は二
1 2 3 4 5 6 7 8
3 2 7 8 1 4 5 6
番号→値の順に読むと
1->3->7->5->1

2->2

4->8->6
に示すように、3つのループが生成されるので、答えは3です.
この問題を解決する最初の方法は次のとおりです.
これは順番に読み取り、配列に値を追加し、すべてのループを完了する方法です.
[1,3]を配列に配置し、次の符号と値は2,2であり、これらの数字は前の配列にないため、新しい
配列を生成します.そのため、次のことができます.
[1,3]
[2]                  //중복은 제외한다.
3番目、7番目の数字を追加できます.3番目の数字は最初の配列にあります.
7を追加します.
[1,3,7]
[2]
このように循環して並べば、答えが得られます.
この式では、追加のメモリ(スペースの複雑さ2 n)を使用します.
したがって、正しい解決策は次のとおりです.
数値をルーラーとして、ループするまで繰り返します.
この方法はすべてのスケールを過ぎると答えを求めることができる.
↓
1 2 3 4 5 6 7 8
3 2 7 8 1 4 5 6
最初のラベルは1値が3です.では、3番目のスケールに移動します.1番目のスケールはすでに使用されています.
以降使わない値をx表示後の3に移動します.
    ↓
1 2 3 4 5 6 7 8
x 2 7 8 1 4 5 6
ルーラーは3、値は7なので、7回目の移動でx値が表示されます.
            ↓
1 2 3 4 5 6 7 8
x 2 x 8 1 4 5 6
符号は7、値は5で、前のように行います.
        ↓      
1 2 3 4 5 6 7 8
x 2 x 8 1 4 x 6
現在は5で、値は1です.開始ヘッダーは現在の値と同じで、ループは終了します.
現在、未使用の値はxで表されているため、未使用の句読点が見つかり、同じ解決策が見つかりました.
すべての先端が使用されるまで適用を続け、繰り返し使用すれば、答えが得られます.