各要素が元の位置と異なる順列を扱っています。私は与えられたアルゴリズム{入力の長さ、行と数字}、私に出力番号を与えたいと思います。ここでは例です:要素が残っていない順列を見つける
入力の長さが4である場合には、0123の全ての順列は次のとおりです。
:何桁が同じ場所(すべての桁が移動した)ではありませんれ0123,0132,0213,0231,0312,0321,
1023,1032,1203,1230,1302,1320,
2013,2031,2103,2130,2301,2310,
3012,3021,3102,3120,3201,3210
順列
番号は0から始まり、関数への入力が{4,0,0}の場合、出力は0番目(最初の)置換の0番目(左端)の数字になります。入力は、出力が2
行番号である1230の第二の数字は、のnubmer高くなることがあり、{4,1,1}である場合には1032の最初の桁が1
あります順列。その場合、置換の数を法とする剰余を取る(上記の場合は、9を法とする行)。
C言語では素晴らしいでしょう。
(これは宿題ではありません。あなたが知っていなければならないのであれば、Cuckoo hashingです。私は、ステージごとにスワップをランダムに選択して、BFSよりも優れているかどうかを確認したいと思います2以上である)Pythonで
この質問には、パーミュテーションに部分的な順序を定義しない限り、意味のある答えはありません。誰が0123が0213より前に来なければならないと言っていますか? –
良いコメントタイラー。私は順列を最小から最大まで並べ替えましたが、出力が入力のみの関数であり、各行が等しくなる限り、行の順序は気にしません。 – Eyal
宿題でなければ、それをタグ付けして申し訳ありません。タグをもう一度削除しました。私は非常に確信していました。特にあなたがコミュニティのwikiを作ったからです。謝罪します。 – balpha