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,61 @@
package q79
func search(board [][]byte, word string, prefixLen, row, col int) bool {
if row < 0 || col < 0 || row >= len(board) || col >= len(board[0]) {
return false
}
if word[prefixLen] != board[row][col] {
return false
}
if prefixLen+1 == len(word) {
return true
}
c := board[row][col]
board[row][col] = '#'
yes := false ||
search(board, word, prefixLen+1, row, col+1) ||
search(board, word, prefixLen+1, row, col-1) ||
search(board, word, prefixLen+1, row+1, col) ||
search(board, word, prefixLen+1, row-1, col)
board[row][col] = c
return yes
}
func exist(board [][]byte, word string) bool {
w, h := len(board[0]), len(board)
if len(word) > w*h {
return false
}
charFreq := make([]int, 26*2)
idx := func(b byte) byte {
if b >= 'a' {
return b - 'a' + 26
}
return b - 'A'
}
for row := range board {
for col := range board[0] {
charFreq[idx(board[row][col])]++
}
}
for i := range len(word) {
ii := idx(word[i])
charFreq[ii]--
if charFreq[ii] < 0 {
return false
}
}
for row := range board {
for col := range board[0] {
if search(board, word, 0, row, col) {
return true
}
}
}
return false
}
var _ = exist