Heap's algorithm: Difference between revisions
Jump to navigation
Jump to search
(Created page with "== Overview == Heap's algorithm 내용 정리. == Example == === Go === <source lang=go> package main import "fmt" func permutations(arr []int)[][]int{ var helper func...") |
No edit summary |
||
| Line 1: | Line 1: | ||
== Overview == | == Overview == | ||
Heap's algorithm 내용 정리. | Heap's algorithm 내용 정리. | ||
== Basic == | |||
모든 조합가능한 아이템의 목록을 나타내는 알고리즘 중의 하나이다. | |||
== Example == | == Example == | ||
Latest revision as of 00:42, 7 September 2020
Overview
Heap's algorithm 내용 정리.
Basic
모든 조합가능한 아이템의 목록을 나타내는 알고리즘 중의 하나이다.
Example
Go
<source lang=go> package main
import "fmt"
func permutations(arr []int)[][]int{
var helper func([]int, int)
res := [][]int{}
helper = func(arr []int, n int){
if n == 1{
tmp := make([]int, len(arr))
copy(tmp, arr)
res = append(res, tmp)
} else {
for i := 0; i < n; i++{
helper(arr, n - 1)
if n % 2 == 1{
tmp := arr[i]
arr[i] = arr[n - 1]
arr[n - 1] = tmp
} else {
tmp := arr[0]
arr[0] = arr[n - 1]
arr[n - 1] = tmp
}
}
}
}
helper(arr, len(arr))
return res
}
func main() {
arr := []int{1, 2, 3, 4}
for _, perm := range(permutations(arr)){
fmt.Println(perm)
}
} </source>