從網路課程 程式必修課!離散數學與演算法 來淺嚐一下沒機會在課堂上所學的離散數學與演算法。或許對撰寫程式的效能提昇會有些幫助。
課程相關資訊
[連結]:https://hiskio.com/courses/1196/lectures/133803
本篇範圍:Chapter 8
請注意:本系列文章為個人對應課程的消化吸收後,所整理出來的內容。換言之,並不一定會包含全部的課程內容,也有可能會添加其他資源來說明。
內容
Coding 排列
1. 用兩個指針 A, B 進行,每跑一組,就將 A,B 的值給交換
2. 用 Recursion 的方式進行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
function permutation(arr, start){ const result = [] function swap(arr, i, j){ [arr[i], arr[j]] = [arr[j], arr[i]] } function backtrack(start){ if(start >= arr.length){ result.push([...arr]) }else{ for(let i = start; i< arr.length; i++){ swap(arr, start, i) backtrack(start + 1) swap(arr, start, i) } } } backtrack(start) return result } console.log(permutation(["A","B","C","D"], 0)) |