首页 > 数据库 >[Oracle] LeetCode 37 Sudoku Solver

[Oracle] LeetCode 37 Sudoku Solver

时间:2022-10-01 16:33:43浏览次数:58  
标签:Sudoku int 37 check board Oracle occur must

Write a program to solve a Sudoku puzzle by filling the empty cells.

A sudoku solution must satisfy all of the following rules:

  • Each of the digits 1-9 must occur exactly once in each row.
  • Each of the digits 1-9 must occur exactly once in each column.
  • Each of the digits 1-9 must occur exactly once in each of the 9 3x3 sub-boxes of the grid.

The '.' character indicates empty cells.

Solution

对于每一个空缺的位置,我们需要遍历所有的数字进行 \(check\)

\(check\) 的时候我们需要对于所在行,所在列,以及小九宫格进行检查,这里注意九宫格检查的写法

点击查看代码
class Solution {
private:
    bool check(char c, vector<vector<char>>& board, int row, int col){
        for(int i=0;i<9;i++){
            if(board[i][col]==c)return false;
            if(board[row][i]==c)return false;
            if(board[3*(row/3)+i/3][3*(col/3)+i%3]==c)return false;
        }
        return true;
    }
    
    bool dfs(vector<vector<char>>& board){
        int nr = board.size(), nc = board.size();
        for(int i=0;i<nr;i++){
            for(int j=0;j<nc;j++){
                if(board[i][j]=='.'){
                    for(char c = '1';c<='9';c++){
                        if(check(c,board,i,j)){
                            board[i][j]=c;
                            if(dfs(board))return true;
                            else board[i][j]='.';
                        }
                    }
                    return false;
                }
            }
        }
        return true;
    }
    
public:
    void solveSudoku(vector<vector<char>>& board) {
        dfs(board);
    }
};

标签:Sudoku,int,37,check,board,Oracle,occur,must
From: https://www.cnblogs.com/xinyu04/p/16747364.html

相关文章

  • [Oracle] LeetCode 560 Subarray Sum Equals K 思维+Map
    Givenanarrayofintegersnumsandanintegerk,returnthetotalnumberofsubarrayswhosesumequalstok.Asubarrayisacontiguousnon-emptysequenceof......
  • oracle 同义词
    目录oracle同义词1、同义词的语法2、授权同义词创建权限3、创建同义词4、使用oracle同义词1、同义词的语法CREATE[ORREPLACE][PUBLIC]SYNONYM[schema.]同义词......
  • oracle基本数据类型
    ORACLE基本数据类型:字符串类型、数字类型、日期类型、LOB类型类型作用NUMBERNUMBER(P,S)是最常见的数字类型。P是Precision的英文缩写,即精度缩写,表示有效数字的......
  • oracle默认用户
    目录oracle默认用户1.超级管理员2、系统管理员3、普通用户oracle默认用户oracle有三个默认的用户名和密码1.超级管理员sys/change_on_install2、系统管理员system/m......
  • oracle字符串转多行
    withtas(SELECT'Newyork;London;Paris'city_namesFROMdualUNIONALLSELECT'Sydney;Singapore'FROMdualUNIONALLselect'Californ......
  • oracle数据库安装centos 7
    0、查看Swap分区空间不能小于2GgrepSwapTotal/proc/meminfofree-g备注:单位:kmg1、关闭防火墙systemctlstopfirewalld.servicesystemctldisablefirewalld......
  • Oracle 的nvl函数和nvl2函数用法
    空空Ryan nvl()函数和nvl2()函数如果你某个字段为空,但是你想让这个字段显示0,可以使用nvl(字段名,0),当然这个0也可以换成其他东西,如:1,2,3…… 一 NVL(表达式1,......
  • 【笔记】Oracle Offset 以及力扣
    【笔记】OracleOffsetoffset代表跳过前n行,如果表少于n+1条记录,结果集将是空的;比如n=100,表示从101开始往后查。fetchnext代表往后查n行;next和first可......
  • 基于ZYNQ、AM5728、AM5708、AM437x、AM335x、STM32+FPGA
     信迈基于ZYNQ、AM5728、AM5708、AM437x、AM335x、STM32+FPGA等平台提供了开源EtherCAT主站IgH案例本文档适用开发环境:Windows开发环境:Windows764bit、Windows1064bitL......
  • Oracle常用SQL
    【统计数据条数大于2的】  SELECTSERIAL_NUMBERFROMV_SIMPLE_ENTRUSTMANAGEMENT GROUPBYSERIAL_NUMBERHAVINGCOUNT(SERIAL_NUMBER)>2 【表注释查询】  SE......