登录
首页 >  Golang >  Go问答

解决Golang中数独问题的网格数组

来源:stackoverflow

时间:2024-03-07 22:21:22 111浏览 收藏

从现在开始,努力学习吧!本文《解决Golang中数独问题的网格数组》主要讲解了等等相关知识点,我会在golang学习网中持续更新相关的系列文章,欢迎大家关注并积极留言建议。下面就先一起来看一下本篇正文内容吧,希望能帮到你!

问题内容

您好,我对此 seenrow[grid[i][j][0] - 49] 的代码有疑问。这是什么?

func sudoku2(grid [][]string) bool {
    for i := 0; i < 9; i++ {
        var seenRow [9]bool
        var seenCol [9]bool
        var seenSub [9]bool
        for j := 0; j < 9; j++ {
            if grid[i][j] != "." {
                if seenRow[grid[i][j][0] - 49] {
                    return false
                }
                seenRow[grid[i][j][0] - 49] = true
            }
            if grid[j][i] != "." {
                if seenCol[grid[j][i][0] - 49] {
                    return false
                }
                seenCol[grid[j][i][0] - 49] = true
            }
            x := i%3*3 + j%3
            y := i/3*3 + j/3
            if grid[y][x] != "." {
                if seenSub[grid[y][x][0] - 49] {
                    return false
                }
                seenSub[grid[y][x][0] - 49] = true
            }
        }
    }
    return true
}


解决方案


seenRow[grid[i][j][0] - 49]

seenrowstring 的切片的切片,因此前两个索引为 [i][j]grid[i][j] 是一个字符串,grid[i][j][0] 是第一个字节值的整数值。

减法 -49 和 9 元素切片 seenrow 让我认为字符串的第一个字节是 49 到 57 之间的值(ascii 值“1”到“9”)。此时,值得查看代码的其他部分,以了解 grid 中存储了哪些数据及其语义。

如果我不得不猜测的话,grid 是一个 9×9 的 sudoko 板,其中每个值都表示为 1 字节字符串,值为“1”到“9”,并带有一个特殊值“.”。这是一个相当奇怪的表示,但它是代码所建议的。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>