add new solutions

This commit is contained in:
kanna5 2026-01-05 16:48:03 +09:00
parent d798d5e8c9
commit 886b5e0a8e
Signed by: kkyy
GPG key ID: 06332F3965E9B0CF
34 changed files with 1164 additions and 0 deletions

View file

@ -0,0 +1,51 @@
package q77
var (
allocBuf []int
allocP int
)
func alloc(sz int) []int {
if allocBuf == nil || allocP+sz > 8192 {
allocP = 0
allocBuf = make([]int, 8192)
}
ret := allocBuf[allocP : allocP+sz]
allocP += sz
return ret
}
func combine(n int, k int) [][]int {
buf := alloc(k)
for i := range buf {
buf[i] = i + 1
}
sz := 1
for i := 1; i <= k; i++ {
sz = sz * (n - i + 1) / i
}
ret := make([][]int, 0, sz)
for {
t := alloc(k)
copy(t, buf)
ret = append(ret, t)
if buf[0] == n-k+1 {
break
}
buf[k-1]++
i := k - 1
for ; i > 0 && buf[i] > n-(k-1-i); i-- {
buf[i-1]++
}
for i++; i < k; i++ {
buf[i] = buf[i-1] + 1
}
}
return ret
}
var _ = combine