|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
|
|
|
|
"./student"
|
|
|
|
"github.com/01-edu/public/go/lib"
|
|
|
|
)
|
|
|
|
|
|
|
|
func show(n int, table [9]int, tmax [9]int) {
|
|
|
|
i := 0
|
|
|
|
for i < n {
|
|
|
|
fmt.Print(table[i])
|
|
|
|
i++
|
|
|
|
}
|
|
|
|
if table[0] != tmax[0] {
|
|
|
|
fmt.Print(", ")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func printComb1() {
|
|
|
|
table := [9]int{0}
|
|
|
|
tmax := [9]int{9}
|
|
|
|
for table[0] <= tmax[0] {
|
|
|
|
show(1, table, tmax)
|
|
|
|
table[0]++
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func printCombN(n int) {
|
|
|
|
table := [9]int{0, 1, 2, 3, 4, 5, 6, 7, 8}
|
|
|
|
tmax := [9]int{}
|
|
|
|
|
|
|
|
if n == 1 {
|
|
|
|
printComb1()
|
|
|
|
} else {
|
|
|
|
i := n - 1
|
|
|
|
j := 9
|
|
|
|
for i >= 0 {
|
|
|
|
tmax[i] = j
|
|
|
|
i--
|
|
|
|
j--
|
|
|
|
}
|
|
|
|
i = n - 1
|
|
|
|
for table[0] < tmax[0] {
|
|
|
|
if table[i] != tmax[i] {
|
|
|
|
show(n, table, tmax)
|
|
|
|
table[i]++
|
|
|
|
}
|
|
|
|
if table[i] == tmax[i] {
|
|
|
|
if table[i-1] != tmax[i-1] {
|
|
|
|
show(n, table, tmax)
|
|
|
|
table[i-1]++
|
|
|
|
j = i
|
|
|
|
for j < n {
|
|
|
|
table[j] = table[j-1] + 1
|
|
|
|
j++
|
|
|
|
}
|
|
|
|
i = n - 1
|
|
|
|
}
|
|
|
|
}
|
|
|
|
for table[i] == tmax[i] && table[i-1] == tmax[i-1] && i > 1 {
|
|
|
|
i--
|
|
|
|
}
|
|
|
|
}
|
|
|
|
show(n, table, tmax)
|
|
|
|
}
|
|
|
|
fmt.Println()
|
|
|
|
}
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
table := []int{1, 2, 3, 4, 5, 6, 7, 8, 9}
|
|
|
|
for _, arg := range table {
|
|
|
|
lib.Challenge("PrintCombN", student.PrintCombN, printCombN, arg)
|
|
|
|
}
|
|
|
|
}
|