-
Notifications
You must be signed in to change notification settings - Fork 0
/
boj15655.go
59 lines (48 loc) · 886 Bytes
/
boj15655.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package main
import (
"bufio"
"fmt"
"os"
"sort"
)
var (
M int
N int
writer = bufio.NewWriter(os.Stdout)
nums []int
visited []bool
)
func main() {
reader := bufio.NewReader(os.Stdin)
defer writer.Flush()
fmt.Fscanln(reader, &N, &M)
nums = make([]int, N)
for i := range nums {
fmt.Fscan(reader, &nums[i])
}
sort.Ints(nums)
visited = make([]bool, N)
for i, num := range nums {
visited[i] = true
recursion(1, []int{num})
visited[i] = false
}
}
func recursion(depth int, value []int) {
if depth == M {
for _, v := range value {
fmt.Fprintf(writer, "%d ", v)
}
fmt.Fprintln(writer)
return
}
for i := 0; i < N; i++ {
if visited[i] == false && value[len(value)-1] <= nums[i] {
visited[i] = true
value = append(value, nums[i])
recursion(depth+1, value)
value = value[:len(value)-1]
visited[i] = false
}
}
}