46.全排列
const arr = [1, 2, 3, 4] const p = [] const res = [] const visited = new Array(arr.length).fill(false) const f = (depth) => { if (depth.length === arr.length) { res.push([...depth]) // console.log('res:', res) return } for (let i = 0; i < arr.length; i++) { if (!visited[i]) { depth.push(arr[i]) visited[i] = true f(depth) depth.pop() visited[i] = false } } } f(p) console.log(res)
这个问题相当之经典,至少对于我而言是的,而且个人觉得,也很有用,尤其是在做游戏方面。试想一下,给定一组数据,通过该算法可以获得所有基于该数组的排列组合,此时,再配上一个随机函数,感受到数学的魅力了吗?这个算法可以很好地处理次序未知的问题,特指确认一组人而不是单个的顺序问题。
该算法也是我认为,有用的算法题之一。
浙公网安备 33010602011771号