当前位置:   article > 正文

Golang | Leetcode Golang题解之第37题解数独

Golang | Leetcode Golang题解之第37题解数独

 题目:

题解:

  1. func solveSudoku(board [][]byte) {
  2. var line, column [9][9]bool
  3. var block [3][3][9]bool
  4. var spaces [][2]int
  5. for i, row := range board {
  6. for j, b := range row {
  7. if b == '.' {
  8. spaces = append(spaces, [2]int{i, j})
  9. } else {
  10. digit := b - '1'
  11. line[i][digit] = true
  12. column[j][digit] = true
  13. block[i/3][j/3][digit] = true
  14. }
  15. }
  16. }
  17. var dfs func(int) bool
  18. dfs = func(pos int) bool {
  19. if pos == len(spaces) {
  20. return true
  21. }
  22. i, j := spaces[pos][0], spaces[pos][1]
  23. for digit := byte(0); digit < 9; digit++ {
  24. if !line[i][digit] && !column[j][digit] && !block[i/3][j/3][digit] {
  25. line[i][digit] = true
  26. column[j][digit] = true
  27. block[i/3][j/3][digit] = true
  28. board[i][j] = digit + '1'
  29. if dfs(pos + 1) {
  30. return true
  31. }
  32. line[i][digit] = false
  33. column[j][digit] = false
  34. block[i/3][j/3][digit] = false
  35. }
  36. }
  37. return false
  38. }
  39. dfs(0)
  40. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/457339
推荐阅读
相关标签
  

闽ICP备14008679号