総置換は、時間計算量が O(n!) のアルゴリズムです。2 日前に学生に講義をしていたときに、この問題を思いつき、7 つのアルゴリズムで解くことができました。このうち動的ループはバックトラッキング アルゴリズムに似ていますが、実装が比較的面倒なので、読者の便宜のために 6 種類をまとめました。すべてのアルゴリズムは JavaScript で記述されており、直接実行できます。
アルゴリズム 1: 再帰
1.
3. -8" />
4.
完全な置換(再帰的スワップ) - Mengliao Software 5.
6. < body>
7.
完全な置換(再帰的スワップ)
8. Mengliao Software Studio - Bosun Network Co., Ltd.
2011.05.24
10. /javascript">
11. /*
12. 完全配置 (再帰的交換) アルゴリズム
13. 1. 異なる要素を最初の位置に配置します;
14 . 2. 残りの位置を完全に配置します (再帰的);
15. 3. 再帰的終了は、1 つの要素だけを完全に配置することです。
16. */
17. 関数 swap(arr,i,j) {
18. var temp=arr[i];
21. arr[j]=temp;
24. 関数 show(arr) {
26. "+ ++count+": "+arr+"
");
27. }
28. function perm(arr) {
29. (function fn(n) { // n 番目の要素を選択します
30. -1) // 完全にソートされる配列内の残りの要素が 1 より大きいかどうかを判断します
33 // 一連の結果を表示します
36. swap(arr, i,n);
37. (0);
41.
42.