读书人

全排列算法的兑现

发布时间: 2012-09-19 13:43:54 作者: rapoo

全排列算法的实现
题目如下:
a)求一个全排列函数:如p([1,2,3]) ,输出: [123],[132],[213],[231],[321],[323]。
b)求一个组合函数: 如p([1,2,3]) ,输出:[1],[2],[3],[1,2],[2,3],[1,3],[1,2,3]。

排列的解法



组合想了好久没想出思路,求指导啊!!
var matrix=[[1,2,3,4],[0,2,3,4],[0,0,3,4],[0,0,0,4]]; //var matrix=[[1,2,3],[0,2,3],[0,0,3]];function calc(arr, index){ for(var i=index; i<matrix.length; i++){ var temp=[]; for(var j=0; j!=arr.length; j++){ temp.push(arr[j]); } temp.push(matrix[i][i]); console.log(temp); calc(temp,i+1); }}calc([], 0);

output:
[1]
[1, 2]
[1, 2, 3]
[1, 2, 3, 4]
[1, 2, 4]
[1, 3]
[1, 3, 4]
[1, 4]
[2]
[2, 3]
[2, 3, 4]
[2, 4]
[3]
[3, 4]
[4]

读书人网 >编程

热点推荐