好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > Go語言實現的最簡單數獨解法

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("")
    }
}

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

您可能感興趣的文章:
  • Java實現解數獨的小程序
  • JavaScript遍歷求解數獨問題的主要思路小結
  • python實現數獨算法實例
  • c++遞歸解數獨方法示例
  • JQuery開發的數獨游戲代碼
  • PHP實現的方程求解示例分析
  • PHP經典算法集錦【經典收藏】
  • php編寫的抽獎程序中獎概率算法
  • php 大數據量及海量數據處理算法總結
  • 適用于抽獎程序、隨機廣告的PHP概率算法實例
  • php中最簡單的字符串匹配算法
  • php數字轉漢字代碼(算法)
  • PHP實現的數獨求解問題示例

標簽:雅安 宜昌 紹興 上海 眉山 邢臺 盤錦 七臺河

巨人網絡通訊聲明:本文標題《Go語言實現的最簡單數獨解法》,本文關鍵詞  語言,實現,的,最簡,單數,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Go語言實現的最簡單數獨解法》相關的同類信息!
  • 本頁收集關于Go語言實現的最簡單數獨解法的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 在线观看黄色影视| 美女的隐私视频黄www软件| 关之琳最想删掉的三个角色| 老师兔子好多水| 久国产视频| 经典wc偷窥小便6| 日韩人妻无码一区二区三区中文| 美色阁亚洲91网站在线观看| 18岁毛片| 国产毛片久久久久久久精品软件 | 古代黄色片| 蜜臀91丨国产人妻人伦图片| 免费播放三圾片| 人成网站在线观看| 操片免费看| 波多野结衣家庭教师在线视频| 男男双性顶撞喘嗯啊H漫画触手| 欧美毛片一二三区久久日本Av91 | 男女啪啪小说| 免费看吻胸亲嘴激烈网站| 国产特黄三级三级三级| 老太熟妇性BBwBBwBBw| asian亚洲美女pics| 污女视频| 欧美性xxxxx| 日本免费网站在线观看| 99精品久久久久久久免费| 日本不卡在线一区二区三区视频| 美女的隐私图片无遮挡| japanese色系护士javaHD| sao浪受的饥渴日常分卷阅读 | 57pao国产成视频一永久免费| 色欲国产精品久久毛片AV大全| 国产乱婬AV人妻无码电影| 跟闺蜜忍不住寂寞互慰了| 国产在线视频不卡一区二区| 双性男仆胸大又放荡的h视频| 放荡小婬妇h文| 女上男下狂XOXO动态图| 蜜w桃w传w媒w少w妇| 孕妇特级毛片|