亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Golang > 正文

Go語言實現的最簡單數獨解法

2020-04-01 19:15:25
字體:
來源:轉載
供稿:網友
前面給大家介紹過使用javascript實現的簡單的數獨解法,小伙伴們都非常喜歡,今天我們再來分享一則go語言實現的簡單的數獨解法,有需要的小伙伴來參考下。
 

soduku.go

 

復制代碼代碼如下:

package main
import (
    "fmt"
)
type node []int
var sudokuMay [9][9]node
var Sudoku = [9][9]int{
    {0, 0, 0, 0, 0, 0, 8, 0, 0},
    {0, 8, 2, 4, 0, 0, 0, 0, 0},
    {1, 9, 0, 0, 6, 3, 0, 0, 0},
    {0, 5, 0, 0, 8, 0, 7, 0, 0},
    {6, 7, 8, 2, 0, 9, 1, 4, 3},
    {0, 0, 3, 0, 4, 0, 0, 8, 0},
    {0, 0, 0, 6, 2, 0, 0, 9, 4},
    {0, 0, 0, 0, 0, 5, 6, 1, 0},
    {0, 0, 0, 6, 0, 0, 0, 0, 0}}
func main() {
    n := inited(Sudoku)
    SudokuSure, _ := sure(sudokuMay)
    for n > 0 {
        n = Subinit(SudokuSure)
        // Output(sudokuMay)
        // fmt.Println(n)
        SudokuSure, _ = sure(sudokuMay)
    }
    Output(sudokuMay)
    fmt.Println(isEnable(sudokuMay))
    // test()
}
func isEnable(tn [9][9]node) bool {
    for i := 0; i < 9; i++ {
        for j := 0; j < 9; j++ {
            if len(tn[i][j]) == 0 {
                return false
            }
        }
    }
    return true
}
func sure(may [9][9]node) (sure [9][9]int, n int) {
    n = 0
    for i := 0; i < 9; i++ {
        for j := 0; j < 9; j++ {
            if len(may[i][j]) == 1 {
                sure[i][j] = may[i][j][0]
                n++
            } else {
                sure[i][j] = 0
            }
        }
    }
    return
}
func test() {
    i, j := 1, 3
    fmt.Println(Sudoku[i][j])
    for k := ((i / 3) * 3); k < ((i/3)*3)+3; k++ {
        for l := ((j / 3) * 3); l < ((j/3)*3)+3; l++ {
            fmt.Print(Sudoku[k][l])
        }
        fmt.Println(" ")
    }
}
func inited(Sud [9][9]int) (changeCount int) {
    tmp := 0
    changeCount = 0
    for i := 0; i < 9; i++ {
        for j := 0; j < 9; j++ {
            if Sud[i][j] != 0 {
                sudokuMay[i][j] = append(sudokuMay[i][j], Sud[i][j])
            } else {
                for k := 0; k < 9; k++ {
                    sudokuMay[i][j] = append(sudokuMay[i][j], k+1)
                }
                sudokuMay[i][j], tmp = excludeMay(i, j, sudokuMay[i][j], Sud)
                changeCount += tmp
            }
        }
    }
    return
}
func Subinit(Sud [9][9]int) (changeCount int) {
    tmp := 0
    changeCount = 0
    for i := 0; i < 9; i++ {
        for j := 0; j < 9; j++ {
            if Sud[i][j] != 0 {
                sudokuMay[i][j][0] = Sud[i][j]
            } else {
                sudokuMay[i][j], tmp = excludeMay(i, j, sudokuMay[i][j], Sud)
                changeCount += tmp
            }
        }
    }
    return
}
func excludeMay(ti, tj int, t node, S [9][9]int) (rmay node, changeCount int) {
    changeCount = 0
    var tmpChangeCount int
    for i := 0; i < 9; i++ {
        if S[i][tj] != 0 {
            t, tmpChangeCount = exclude(t, S[i][tj])
            changeCount += tmpChangeCount
        }
        if S[ti][i] != 0 {
            t, tmpChangeCount = exclude(t, S[ti][i])
            changeCount += tmpChangeCount
        }
    }
    for k := ((ti / 3) * 3); k < ((ti/3)*3)+3; k++ {
        for l := ((tj / 3) * 3); l < ((tj/3)*3)+3; l++ {
            if S[k][l] != 0 {
                t, tmpChangeCount = exclude(t, S[k][l])
                changeCount += tmpChangeCount
            }
        }
    }
    rmay = t
    return
}
func excludeFirstOne(smay node, n int) (rmay node, changeCount int) {
    changeCount = 0
    rmay = smay
    for i := 0; i < len(smay); i++ {
        if smay[i] == n {
            changeCount++
            rmay = append(smay[:i], smay[i+1:]...)
            return
        }
        if i == len(smay)-1 {
            return
        }
    }
    return
}
func exclude(smay node, n int) (tmp node, changeCount int) {
    var nc int
    changeCount = 0
    tmp, nc = excludeFirstOne(smay, n)
    for nc > 0 {
        tmp, nc = excludeFirstOne(tmp, n)
        changeCount++
    }
    return
}
func Output(sudoku [9][9]node) {
    for i := 0; i < 9; i++ {
        for j := 0; j < 9; j++ {
            fmt.Print(sudokuMay[i][j])
        }
        fmt.Println("")
    }
}

 

以上就是本文給大家分享的代碼的全部內容了,希望大家能夠喜歡。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人午夜高潮视频| 国产精品美女av| 国产欧美一区二区三区四区| 久久天天躁狠狠躁夜夜躁2014| 欧美丰满片xxx777| 国产精品2018| 精品国产一区av| 欧美中文字幕在线观看| 久久伊人91精品综合网站| 欧美日韩中国免费专区在线看| 亚洲专区在线视频| 日韩欧美在线一区| 国产一区二中文字幕在线看| 中文字幕在线精品| 国产成人欧美在线观看| 7777精品久久久久久| 国产精品久久一区| 国产欧美韩国高清| 亚洲国产精品人人爽夜夜爽| 日韩激情视频在线播放| 亚洲精品美女在线| 欧美成人午夜剧场免费观看| 亚洲国产精品字幕| 国内免费久久久久久久久久久| 久久久久久久久久久91| 中日韩美女免费视频网址在线观看| 欧美精品性视频| 日韩av最新在线观看| 亚洲欧美一区二区三区在线| 日韩成人av网址| 欧美性生交xxxxxdddd| 亚洲乱码国产乱码精品精天堂| 欧美性猛交99久久久久99按摩| 91精品国产91久久久久久最新| 日韩激情在线视频| 日韩av中文字幕在线| 日韩精品免费一线在线观看| 亚洲伊人一本大道中文字幕| 精品丝袜一区二区三区| 免费成人高清视频| 国产成人精品国内自产拍免费看| 欧美色道久久88综合亚洲精品| 国产精品高潮呻吟久久av无限| 日韩av在线免播放器| 国产精品亚洲欧美导航| 国产成人精品在线播放| 亚洲美腿欧美激情另类| 国产日韩在线播放| 国产亚洲精品激情久久| 欧美激情综合亚洲一二区| 欧美一级免费看| 亚洲国内高清视频| 欧美大肥婆大肥bbbbb| 欧美日韩国产成人在线观看| 久久激情视频久久| 久久精品一本久久99精品| 国产精品激情自拍| 亚洲老司机av| 久久综合免费视频| 少妇高潮久久久久久潘金莲| 欧美日韩亚洲成人| 91精品视频观看| 亚洲成人性视频| 欧美日韩福利电影| 色综合伊人色综合网站| 亚洲综合精品一区二区| 欧美激情免费观看| 青青草一区二区| 日韩欧美aⅴ综合网站发布| 国产精品白丝jk喷水视频一区| 日韩69视频在线观看| 久热精品视频在线观看一区| 国产精品视频公开费视频| 欧美成人免费全部观看天天性色| 国产成人jvid在线播放| 亚洲欧洲黄色网| 成人h猎奇视频网站| 国产亚洲免费的视频看| 2021久久精品国产99国产精品| 日韩美女免费线视频| 亚洲一区二区三区在线视频| 隔壁老王国产在线精品| 国产成人在线一区二区| 国产精品中文在线| 97精品免费视频| 91在线直播亚洲| 国产精品电影网站| 黑人巨大精品欧美一区二区| 亚洲激情在线观看视频免费| 国内外成人免费激情在线视频| 国产精品午夜一区二区欲梦| 在线视频免费一区二区| 国产精品欧美激情| 91精品在线观看视频| 亚洲嫩模很污视频| 日韩中文字幕在线观看| 精品爽片免费看久久| 精品久久久香蕉免费精品视频| 九九久久精品一区| 亚洲成人av资源网| 亚洲最新视频在线| 日韩精品视频中文在线观看| 亚洲国产欧美久久| 欧美不卡视频一区发布| 欧美激情按摩在线| 亚洲一区二区三区xxx视频| 亚洲精品美女久久| 成人免费看黄网站| 亚洲国产精品va在线观看黑人| 午夜精品久久久久久久久久久久久| 亚洲国产婷婷香蕉久久久久久| 成人网在线免费观看| 成人av番号网| 久久久久一本一区二区青青蜜月| 欧美在线观看网站| 日韩中文字幕精品| 国产女人18毛片水18精品| 亚洲香蕉av在线一区二区三区| 91亚洲va在线va天堂va国| 久久精品国产一区二区电影| 国产精品99免视看9| 色综合影院在线| 狠狠干狠狠久久| 在线播放日韩专区| 亚洲第一网站男人都懂| 欧美在线免费观看| 97国产成人精品视频| 欧美黄网免费在线观看| 日韩av一区在线观看| 午夜精品理论片| 国内外成人免费激情在线视频网站| 亚洲精品久久7777777| 88国产精品欧美一区二区三区| 777国产偷窥盗摄精品视频| 亚洲最大的av网站| 国产美女久久精品| 日韩av在线网站| 国产欧美一区二区三区久久| 亚洲欧美国产日韩中文字幕| 国产+人+亚洲| 成人免费观看49www在线观看| 欧美激情精品久久久久久大尺度| 久久亚洲精品成人| 久久精品99久久久香蕉| 欧美在线视频播放| 久久精品国产免费观看| 欧美日韩国产黄| 成人国产精品一区| 日本免费久久高清视频| 97成人超碰免| 亚洲欧美制服中文字幕| 国模gogo一区二区大胆私拍| 色综合久久精品亚洲国产| 成人免费xxxxx在线观看| 欧美黑人一级爽快片淫片高清| 韩剧1988免费观看全集| 亚洲成人免费在线视频| 欧美精品一区二区三区国产精品| 日韩av大片免费看| 92福利视频午夜1000合集在线观看| 欧美一区二粉嫩精品国产一线天| 国产成人啪精品视频免费网| 九九热这里只有精品免费看| 日韩中文字幕不卡视频|