首页 > 其他分享 >37. 解数独

37. 解数独

时间:2024-09-06 18:52:37浏览次数:6  
标签:数字 int 37 空格 board 解数 find 数独

目录

一:题目:

二:代码:

三:结果:


一:题目:

编写一个程序,通过填充空格来解决数独问题。

数独的解法需 遵循如下规则

  1. 数字 1-9 在每一行只能出现一次。
  2. 数字 1-9 在每一列只能出现一次。
  3. 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)

数独部分空格内已填入了数字,空白格用 '.' 表示。

二:代码:

class Solution {
private:
    bool find(vector<vector<char>>& board){
        for(int i=0;i<board.size();i++){
            for(int j=0;j<board[0].size();j++){
                if(board[i][j]=='.'){
                    for(char k='1';k<='9';k++){
                        if(judge(i,j,k,board)){
                            board[i][j]=k;
                            if(find(board)) return true;
                            board[i][j]='.';
                        }
                    }
                    return false;
                }
            }
        }
        return true;
    }
    bool judge(int row,int col,int math,vector<vector<char>>& board){
        for(int i=0;i<9;i++){
            if(board[row][i]==math){
                return false;
            }
        }
        for(int i=0;i<9;i++){
            if(board[i][col]==math){
                return false;
            }
        }
        int nrow=(row/3)*3;
        int ncol=(col/3)*3;
        for(int i=nrow;i<nrow+3;i++){
            for(int j=ncol;j<ncol+3;j++){
                if(board[i][j]==math){
                    return false;
                }
            }
        }
        return true;
    }
public:
    void solveSudoku(vector<vector<char>>& board) {
        find(board);
    }
};

三:结果:

标签:数字,int,37,空格,board,解数,find,数独
From: https://blog.csdn.net/mrjieke6/article/details/141965922

相关文章

  • 趣解数据库的事务隔离级别
    数据库事务的隔离级别有4个,由低到高依次为Readuncommitted、Readcommitted、Repeatableread、Serializable,这四个级别可以逐个解决脏读、不可重复读、幻读这几类问题。 √:可能出现    ×:不会出现 脏读不可重复读幻读Readuncommitted√√√Readcommitted--SqlServer......
  • luogu P3808/3796
    首先Trie树:#include<bits/stdc++.h>usingnamespacestd;intT,q,n,t[3000005][65],cnt[3000005],idx;chars[3000005];intgetnum(charx){if(x>='A'&&x<='Z')returnx-'A';elseif(x>='a......
  • AE射频电源维修 射频匹配器修理3155162-037C
    射频(RF)模块中各部分之间的CEX(可能指的是某种特定的控制或耦合信号,尽管“CEX”并非一个广泛认可的标准术语,但在此上下文中我们可以理解为一种用于控制和协调射频信号的信号)射频信号功能,是实现多电源同步和相位锁定的关键技术。这种技术在等离子体物理、半导体制造、科研实验以及......
  • jsp布克书店电子书借阅网站设计与实现z3714
    jsp布克书店电子书借阅网站设计与实现z3714本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表项目功能用户,图书分类,图书信息,图书文件,图书阅读开题报告内容一、课题背景及意义随着互联网技术的飞速发展和......
  • 【C语言】详解数组
    文章目录前言一、数组的概念二、一维数组1.一维数组的创建2.一维数组的初始化3.一维数组的使用4.一维数组在内存中的存储三、二维数组1.二维数组的创建2.二维数组的初始化3.二维数组的使用4.二维数组在内存中的存储前言一、数组的概念(数组是一组相同类型元素......
  • 【D3.js in Action 3 精译_021】第三章 数据的处理 + 3.1 理解数据
    当前内容所在位置第一部分D3.js基础知识第一章D3.js简介(已完结)1.1何为D3.js?1.2D3生态系统——入门须知1.3数据可视化最佳实践(上)1.3数据可视化最佳实践(下)1.4本章小结第二章DOM的操作方法(已完结)2.1第一个D3可视化图表2.2环境准备2.3......
  • 力扣刷题--1837.K进制表示下的各位数字总和【简单】
    题目描述......
  • PTA L1-037 A除以B
    L1-037A除以B(10分)真的是简单题哈——给定两个绝对值不超过100的整数A和B,要求你按照“A/B=商”的格式输出结果。输入格式:输入在第一行给出两个整数A和B(−100≤A,B≤100),数字间以空格分隔。输出格式:在一行中输出结果:如果分母是正数,则输出“A/B=商”;如果分母是负数,则要用括......
  • 377. 组合总和 Ⅳ(leetcode)
    https://leetcode.cn/problems/combination-sum-iv/description/此篇题解解释了为什么不能直接用二维完全背包的方式做不过还是建议把这个题当成一个爬楼梯来做classSolution{public:intcombinationSum4(vector<int>&nums,inttarget){//f[i]表示若干数中......
  • ADM1370 Applications of Information Technology for Business
    ADM1370Applicationsof InformationTechnologyfor BusinessAssignment3–MicrosoftAccessDatabase:acollectionof data, orinformation, thatisspecially organized forrapid searchandretrievalbyacomputer.Databases arestructured to facil......