Heap's algorithm
Jump to navigation
Jump to search
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>