package main
import (
"bufio"
"fmt"
"os"
)
func main() {
for i := 0; i < 5; i++ {
p(i)
}
}
func p(v int) {
var arr [][]int
a := []int{1, 1, 1, 1, 1, 1, 1}
for i := 0; i < 6; i++ {
b := make([]int, 7, 7)
copy(b, a)
b[i] = 0
b[i+1] = 0
arr = append(arr, b)
}
f, err := os.Create(fmt.Sprintf("E:\\每天%d人排班.txt", v))
if err != nil {
return
}
defer f.Close()
w := bufio.NewWriter(f)
count := 0
//arrr := make([][][]int, 0, 720)
dayArr := make([]string, 0, 720)
for _, i1 := range arr {
for _, i2 := range arr {
for _, i3 := range arr {
for _, i4 := range arr {
for _, i5 := range arr {
for _, i6 := range arr {
a = make([]int, 7, 7)
for i := 0; i < 7; i++ {
a[i] = i1[i] + i2[i] + i3[i] + i4[i] + i5[i] + i6[i]
}
str := fmt.Sprintf("%d,%d,%d,%d,%d,%d,%d", a[0], a[1], a[2], a[3], a[4], a[5], a[6])
// 排列中存在等于v天的 存在0~4天,
flag := true
for _, i := range a {
if i == v {
flag = false
break
}
}
if flag {
continue
}
// 必须大于等于v天才放行
for _, i := range a {
if i < v {
flag = true
break
}
}
for _, i := range dayArr {
if i == str {
flag = true
break
}
}
if !flag {
count++
dayArr = append(dayArr, str)
//fmt.Println(a)
fmt.Printf("输出排法%03d(%v):%v %v %v %v %v %v\n", count, str, i1, i2, i3, i4, i5, i6)
fmt.Fprintf(w, "输出排法%03d(%v):%v %v %v %v %v %v\n", count, str, i1, i2, i3, i4, i5, i6)
}
}
}
}
}
}
}
fmt.Fprintf(w, "共%d种排法", count)
w.Flush()
}