import numpy as np
import sys
sys.setrecursionlimit(1000) #例如这里设置为一百万

def get1(n):
    if n<3:
        return 0
    if n<6:
        return 3
    return 6

def get2(n):
    if n<3:
        return 3
    if n<6:
        return 6
    return 9

def get3(arr,i,j):
    a1=list(arr[i,:])
    a2=list(arr[:,j])
    a3=list(arr[get1(i):get2(i),get1(j):get2(j)].reshape(1,-1)[0])
    a=set(a1+a2+a3)
    return b-a

def sd(arr,dep):
    count[0]+=1
    if dep==len(l):
        result.append(arr)
    else:
        x,y=l[dep]
        lac=get3(arr,x,y)
        if len(lac)>0 and len(result)==0:        
            for i in lac:
                ac=arr.copy()
                ac[x,y]=i
                sd(ac,dep+1)
    
    
array= [[5,3,0,0,7,0,0,0,0],
        [6,0,0,1,9,5,0,0,0],
        [0,9,8,0,0,0,0,6,0],
        [8,0,0,0,6,0,0,0,3],
        [4,0,0,8,0,3,0,0,1],
        [7,0,0,0,2,0,0,0,6],
        [0,6,0,0,0,0,2,8,0],
        [0,0,0,4,1,9,0,0,5],
        [0,0,0,0,8,0,0,7,9]]
array=np.array(array)
b,l,old,result,count={1,2,3,4,5,6,7,8,9},[],[],[],[0]
for i in range(0,9):
    for j in range(0,9):
        if array[i,j]==0:
            l.append((i,j))
sd(array,0)
print(result)

leetcode python 037 求解数独的更多相关文章

  1. [LeetCode] Sudoku Solver 求解数独

    Write a program to solve a Sudoku puzzle by filling the empty cells. Empty cells are indicated by th ...

  2. LeetCode 37 Sudoku Solver(求解数独)

    题目链接: https://leetcode.com/problems/sudoku-solver/?tab=Description   Problem : 解决数独问题,给出一个二维数组,将这个数独 ...

  3. [LeetCode] 37. Sudoku Solver 求解数独

    Write a program to solve a Sudoku puzzle by filling the empty cells. A sudoku solution must satisfy  ...

  4. Leetcode Python Solution(continue update)

    leetcode python solution 1. two sum (easy) Given an array of integers, return indices of the two num ...

  5. 求解数独难题, Sudoku问题(回溯)

    Introduction : 标准的数独游戏是在一个 9 X 9 的棋盘上填写 1 – 9 这 9 个数字,规则是这样的: 棋盘分成上图所示的 9 个区域(不同颜色做背景标出,每个区域是 3 X 3 ...

  6. 算法实践——舞蹈链(Dancing Links)算法求解数独

    在“跳跃的舞者,舞蹈链(Dancing Links)算法——求解精确覆盖问题”一文中介绍了舞蹈链(Dancing Links)算法求解精确覆盖问题. 本文介绍该算法的实际运用,利用舞蹈链(Dancin ...

  7. 关于用舞蹈链DLX算法求解数独的解析

    欢迎访问——该文出处-博客园-zhouzhendong 去博客园看该文章--传送门 描述 在做DLX算法题中,经常会做到数独类型的题目,那么,如何求解数独类型的题目?其实,学了数独的构建方法,那么DL ...

  8. 转载 - 算法实践——舞蹈链(Dancing Links)算法求解数独

    出处:http://www.cnblogs.com/grenet/p/3163550.html 在“跳跃的舞者,舞蹈链(Dancing Links)算法——求解精确覆盖问题”一文中介绍了舞蹈链(Dan ...

  9. 前端与算法 leetcode 36. 有效的数独

    目录 # 前端与算法 leetcode 36. 有效的数独 题目描述 概要 提示 解析 算法 传入[['5', '3', '.', '.', '7', '.', '.', '.', '.'],['6' ...

随机推荐

  1. Manjaro搭建无密访问samba服务器

    为了方便Linux在Windows平台下开发,搭建Manjaro无密访问samba服务器 后面加了Windows下搭建samba方法 安装smb服务器 我用的是Manjaro gnome 18,需要安 ...

  2. MySQL按年度、季度、月度、周、日SQL统计查询

    说明 SELECT YEAR('2014-10-29') //2014 SELECT MONTH('2014-10-29') //10 SELECT DAY('2014-10-29') //29 SE ...

  3. 配置IPMI

    服务器电源管理 查看服务器电源状态 ipmitool chassis power status 关闭服务器电源 ipmitool chassis power off 打开服务器电源 ipmitool ...

  4. ios和android 浏览器适配问题总结

    转自 https://blog.csdn.net/wcy7916/article/details/83345705

  5. shell for 循环

    test.sh #!/bin/bash for str in "C语言" "http://www.bilibili.com" "成立7年了" ...

  6. S3T mongodb GUI

    下载 cd ~/Downloads wget https://download.studio3t.com/studio-3t/linux/2019.2.1/studio-3t-linux-x64.ta ...

  7. Myeclipse6.5每次打开properties中文注释都会变成乱码

    发现无论怎么写properties注释,只要重新打开me就会出现乱码.默认properties是不支持中文的.所以最好用英文写properties文档.也可以写好直接翻译.已经写好的乱码直接拖到Chr ...

  8. VUE 创建element项目

    前提:电脑安装git node.js 一.右键Git Bash Here 二.$ vue init webpack element //新建一个element项目,element是文件夹名字 $ cd ...

  9. linux 每天一点点 【ubuntu16.04 】

    1.查看防火墙状态  sudo ufw status [非root用户需要sudo] inactive状态是防火墙关闭状态 active是开启状态 2.查看CentOS版本信息    cat /etc ...

  10. SWUST OJ(1101)

    顺序表中的数据的循环移动 #include <iostream> #include <cstdlib> using namespace std; int main() { in ...