美文网首页
数独问题

数独问题

作者: yuriy0_0 | 来源:发表于2019-01-05 15:09 被阅读0次
屏幕快照 2019-01-04 下午8.33.50.png
#例如输入为:
0 0 5 3 0 0 0 0 0
8 0 0 0 0 0 0 2 0 
0 7 0 0 1 0 5 0 0
4 0 0 0 0 5 3 0 0
0 1 0 0 7 0 0 0 6
0 0 3 2 0 0 0 8 0
0 6 0 5 0 0 0 0 9
0 0 4 0 0 0 0 3 0
0 0 0 0 0 9 7 0 0

mat=[[0]*9 for i in range(9)]
find=0

def ok(x,y):    
    global mat
    up = 3*(x//3)
    down = up+3
    left= 3*(y//3)
    right = left+3
    for i in range(9):
        if mat[x][y]==mat[i][y] and x!=i and mat[i][y]!=0:
            return False
    for j in range(9):
        if mat[x][y]==mat[x][j] and y!=j and mat[x][j]!=0:
            return False
    for row in range(up,down):
        for col in range(left,right):
            if x!=row or y!=col:
                if mat[x][y]==mat[row][col] and mat[row][col]!=0:
                    return False
    return True
    
def printMat():
    global mat
    for i in range(9):
        for j in range(9):
           print(mat[i][j],end=' ')
       print()
    
def traceback(x,y):
    global mat,find
    if find==1:
        return
    if mat[x][y]!=0:
        if y==8:
            if x==8:
                printMat()
                find=1
            else:
                traceback(x+1,y)
        else:
            if x==8:
                traceback(0,y+1)
            else:
                traceback(x+1,y)
    else:
        for i in range(1,10):
            mat[x][y]=i
            if ok(x,y):
                if y==8:
                    if x==8:
                        printMat()
                        find=1
                    else:
                        traceback(x+1,y)
                else:
                    if x==8:
                        traceback(0,y+1)
                    else:
                        traceback(x+1,y)
            mat[x][y]=0
            
                    
while True:
    try:
        inputMat=[]
        for i in range(9):
            s= input().split()
            for j in range(9):
                mat[i][j]=int(s[j])
        find=0
        traceback(0,0)
    except:
        break

相关文章

  • 数独问题

  • 回溯数独问题

    分析: 分了两种方法,第一种按大小走,第二种按照坐标。其中,第二种需注意:1、到n-1行/列的时候判断2、切莫忽略...

  • 数独终局游戏(数独终局生成,数独问题求解,数独题目生成)

    项目简介 Github链接:https://github.com/fagen/sudoku 1、项目要求 能够生成...

  • 数独数独

    想找人一起玩数独,你在哪?

  • 优化建模之MiniZinc(三) 全局约束 -- 以解数独为例

    数独问题中约束的表达 数独是一个经典的问题,在计算机科学中,我们通常使用回溯法来进行求解,但是对于规模稍大的数独问...

  • 数独数独我爱你

    好久没玩数独了,昨天在图书馆借书时突发奇想查了有关数独的书,有好多!借了一本非常数独,回家就迫不及待地翻阅,哇塞,...

  • 数独

    一款拥有几十年历史的数字益智游戏,5种宫格,3种难度,适合各种水平,最接地气的数独游戏。 游戏特性: -- 每种难...

  • 数独

    现在,我每周天几乎都上的数独,直到上周天我全部学完了数独的六堂课。 在课上,我们学习了四宫格与六宫...

  • 数独

    学习目标 1、经历填数游戏活动,初步提高分析推理能力。 2、在探索、尝试、交流等活动中,体会填数游...

  • 数独

    这是一款集合了数独、方块、圈圈消消乐以及疯狂球球的合集游戏,画面精美,操作简单,经典数独与球球考验思维、方块与圈圈...

网友评论

      本文标题:数独问题

      本文链接:https://www.haomeiwen.com/subject/foakrqtx.html