首页 > 技术文章 > 排列与组合算法

xlsdg 2020-06-11 11:18 原文

 1 //组合
 2 
 3 function C(arr, num) {
 4     var r = [];
 5     (function f(t, a, n) {
 6         if (n === 0) {
 7             return r.push(t);
 8         }
 9         for (var i = 0, l = a.length; i <= l - n; i++) {
10             f(t.concat(a[i]), a.slice(i + 1), n - 1);
11         }
12     })([], arr, num);
13     return r;
14 }
15 
16 //排列
17 
18 function P(arr, num) {
19     var r = [];
20     (function f(t, a, n) {
21         if (n === 0) {
22             return r.push(t);
23         }
24         for (var i = 0, l = a.length; i < l; i++) {
25             f(t.concat(a[i]), a.slice(0, i).concat(a.slice(i + 1)), n - 1);
26         }
27     })([], arr, num);
28     return r;
29 }

 

推荐阅读