package main
import (
"bufio"
"fmt"
"os"
)
func dfs(writer *bufio.Writer, visited []bool, result []int, numberChoice, numberEnd, index int) {
if index == numberChoice {
for _, value := range result {
fmt.Fprintf(writer, "%d ", value)
}
fmt.Fprintf(writer, "\n")
return
}
for i := 1; i <= numberEnd; i++ {
if visited[i] {
continue
}
result[index] = i
visited[i] = true
dfs(writer, visited, result, numberChoice, numberEnd, index+1)
visited[i] = false
}
}
func main() {
reader := bufio.NewReader(os.Stdin)
writer := bufio.NewWriter(os.Stdout)
defer writer.Flush()
N := 0
M := 0
fmt.Fscanf(reader, "%d %d\n", &N, &M)
visited := make([]bool, N+1)
result := make([]int, M)
dfs(writer, visited, result, M, N, 0)
}
package main
import (
"bufio"
"fmt"
"os"
)
func dfs(writer *bufio.Writer, visited []bool, result []int, numberChoice, numberStart, numberEnd, index int) {
if index == numberChoice {
for _, value := range result {
fmt.Fprintf(writer, "%d ", value)
}
fmt.Fprintf(writer, "\n")
return
}
for i := numberStart; i <= numberEnd; i++ {
if visited[i] {
continue
}
result[index] = i
visited[i] = true
dfs(writer, visited, result, numberChoice, i, numberEnd, index+1)
visited[i] = false
}
}
func main() {
reader := bufio.NewReader(os.Stdin)
writer := bufio.NewWriter(os.Stdout)
defer writer.Flush()
N := 0
M := 0
fmt.Fscanf(reader, "%d %d\n", &N, &M)
visited := make([]bool, N+1)
result := make([]int, M)
dfs(writer, visited, result, M, 1, N, 0)
}
package main
import (
"bufio"
"fmt"
"os"
)
func promising(board []int, currentRow int) bool {
for i := 0; i < currentRow; i++ {
if board[i] == board[currentRow] ||
i-currentRow == board[i]-board[currentRow] ||
(i-currentRow)*-1 == board[i]-board[currentRow] {
return false
}
}
return true
}
func dfs(board []int, currentRow, boardSize int, result *int) {
if currentRow == boardSize {
*result++
}
for i := 0; i < boardSize; i++ {
board[currentRow] = i
if promising(board, currentRow) {
dfs(board, currentRow+1, boardSize, result)
}
}
}
func main() {
reader := bufio.NewReader(os.Stdin)
writer := bufio.NewWriter(os.Stdout)
defer writer.Flush()
N := 0
fmt.Fscanln(reader, &N)
board := make([]int, 15)
result := 0
dfs(board, 0, N, &result)
fmt.Fprintln(writer, result)
}