对解数独问题的归纳

2023-11-09

    解数独,我们都可能玩过或者了解知道,就是数独游戏。数独是一种运用纸、笔进行演算的逻辑游戏。玩法:在空格里填入数字1到9,使得每一行、每一列和每一个用粗线围起来的3×3的九个单元格里,填数都包含1到9各一个。

    而利用电脑怎样实现呢?怎样将我们的数字解题思路用到代码的实现上呢?其实最简单的方法就是搜所,对每一个要填的空尝试填入1到9,再检查能不能实现。

    我遇到的这道题与数独游戏的规则有区别,如下图:

  其实,都是一样的思路,先尝试,就如“暴力枚举法”,对要填的每一个空进行尝试,再看看有没有什么规律可循,就如,这个空填完了,就进行下一个空。与回溯法也类似,把要填的空分为多个问题,再看看每一步要满足什么条件,有什么约束条件,再注意一下什么时候或者到哪一步问题就解决了,还有就是剪枝的条件。

 

  对于解数独问题的大致思路就是:遍历整个棋盘,对于每个空格,尝试填充,从[1 - 9][1−9]每个数字进行尝试,如果合法,此格子位置就填入该数字,然后递归去填充下一个空格。递归之后要回溯,即把该格子位置还原为空格。

  部分代码:

        for (int row = 0; row < n; row++) { // 遍历整个棋盘,对于每一个空格,都尝试填充,看看满不满足条件

            for (int col = 0; col < n; col++) {// 已填好数字直接跳过

                               if (board[row][col] != '.') {

                    continue;

                }

                // [1 - 9]数字逐一进行尝试

                for (char d = '1'; d <= '9'; d++) {

                    if (valid(row, col, d)) {

                        // 此位置可填充这个数字

                        board[row][col] = d;

                        // 递归去填充下一个空格

                        if (doSolveSudoku()) {

                        return true;

                        }

                        // 回溯,还原为空格

                        board[row][col] = '.';

                    }

                }

                // 这个空格,9个数字都不行,说明没有一个符合条件的解

                return false;

            }

  以上就是对自己遇到的一道题的总结,总结一下方法!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对解数独问题的归纳 的相关文章

  • boost::multi_index_container 复合键中的 equal_range 与比较运算符

    我正在尝试从多索引容器查询结果 其中值类型是三个元素的结构 第一个值已给出 但第二个和第三个值必须大于或小于查询参数 经过搜索后 我发现必须实现自定义密钥提取器 并且这里的一些链接建议相同 但我无法实现它 boost multi index
  • 如何在 Unity 中从 RenderTexture 访问原始数据

    问题的简短版本 我正在尝试访问 Unity 中 RenderTexture 的内容 我一直在使用 Graphics Blit 使用自己的材质进行绘制 Graphics Blit null renderTexture material 我的材
  • SSH 主机密钥指纹与模式 C# WinSCP 不匹配

    我尝试通过 WinSCP 使用 C 连接到 FTPS 服务器 但收到此错误 SSH 主机密钥指纹 与模式不匹配 经过大量研究 我相信这与密钥的长度有关 当使用 服务器和协议信息 下的界面进行连接时 我从 WinSCP 获得的密钥是xx xx
  • 如何在我的应用程序中使用 Windows Key

    Like Windows Key E Opens a new Explorer Window And Windows Key R Displays the Run command 如何在应用程序的 KeyDown 事件中使用 Windows
  • C# 中值类型和引用类型有什么区别? [复制]

    这个问题在这里已经有答案了 我知道一些差异 值类型存储在堆栈上 而引用类型存储在托管堆上 值类型变量直接包含它们的值 而引用变量仅包含对托管堆上创建的对象位置的引用 我错过了任何其他区别吗 如果是的话 它们是什么 请阅读 堆栈是一个实现细节
  • 将字符串从非托管代码传递到托管

    我在将字符串从非托管代码传递到托管代码时遇到问题 在我的非托管类中 非托管类 cpp 我有一个来自托管代码的函数指针 TESTCALLBACK FUNCTION testCbFunc TESTCALLBACK FUNCTION 接受一个字符
  • 使用 C# 在 WinRT 中获取可用磁盘空间

    DllImport kernel32 dll SetLastError true static extern bool GetDiskFreeSpaceEx string lpDirectoryName out ulong lpFreeBy
  • c# Asp.NET MVC 使用FileStreamResult下载excel文件

    我需要构建一个方法 它将接收模型 从中构建excel 构建和接收部分完成没有问题 然后使用内存流导出 让用户下载它 不将其保存在服务器上 我是 ASP NET 和 MVC 的新手 所以我找到了指南并将其构建为教程项目 public File
  • 如何在 Team Foundation 上强制发表有意义的签入评论?

    我有一个开发团队有一个坏习惯 他们写道poor签入评论 当我们必须在团队基础上查看文件的历史记录时 这使得它成为一场噩梦 我已经启用了变更集评论政策 这样他们甚至可以在签到时留下评论 否则他们不会 我们就团队的工作质量进行了一些讨论 他们很
  • EPPlus Excel 更改单元格颜色

    我正在尝试将给定单元格的颜色设置为另一个单元格的颜色 该单元格已在模板中着色 但worksheet Cells row col Style Fill BackgroundColor似乎没有get财产 是否可以做到这一点 或者我是否必须在互联
  • ListDictionary 类是否有通用替代方案?

    我正在查看一些示例代码 其中他们使用了ListDictionary对象来存储少量数据 大约 5 10 个对象左右 但这个数字可能会随着时间的推移而改变 我使用此类的唯一问题是 与我所做的其他所有事情不同 它不是通用的 这意味着 如果我在这里
  • GDK3/GTK3窗口更新的精确定时

    我有一个使用 GTK 用 C 语言编写的应用程序 尽管该语言对于这个问题可能并不重要 这个应用程序有全屏gtk window与单个gtk drawing area 对于绘图区域 我已经通过注册了一个刻度回调gtk widget add ti
  • 在Linux中使用C/C++获取机器序列号和CPU ID

    在Linux系统中如何获取机器序列号和CPU ID 示例代码受到高度赞赏 Here http lxr linux no linux v2 6 39 arch x86 include asm processor h L173Linux 内核似
  • 在 ASP.NET 中将事件冒泡为父级

    我已经说过 ASP NET 中的层次结构 page user control 1 user control 2 control 3 我想要做的是 当控件 3 它可以是任何类型的控件 我一般都想这样做 让用户用它做一些触发回发的事情时 它会向
  • 窗体最大化时自动缩放子控件

    有没有办法在最大化屏幕或更改分辨率时使 Windows 窗体上的所有内容自动缩放 我发现手动缩放它是正确的 但是当切换分辨率时我每次都必须更改它 this AutoScaleDimensions new System Drawing Siz
  • 如何在 C# 中播放在线资源中的 .mp3 文件?

    我的问题与此非常相似question https stackoverflow com questions 7556672 mp3 play from stream on c sharp 我有音乐网址 网址如http site com aud
  • 如何连接字符串和常量字符?

    我需要将 hello world 放入c中 我怎样才能做到这一点 string a hello const char b world const char C string a hello const char b world a b co
  • 将 viewbag 从操作控制器传递到部分视图

    我有一个带有部分视图的 mvc 视图 控制器中有一个 ActionResult 方法 它将返回 PartialView 因此 我需要将 ViewBag 数据从 ActionResult 方法传递到 Partial View 这是我的控制器
  • 为什么 strtok 会导致分段错误?

    为什么下面的代码给出了Seg 最后一行有问题吗 char m ReadName printf nRead String s n m Writes OK char token token strtok m 如前所述 读取字符串打印没有问题 但
  • 不同类型的指针可以互相分配吗?

    考虑到 T1 p1 T2 p2 我们可以将 p1 分配给 p2 或反之亦然吗 如果是这样 是否可以不使用强制转换来完成 或者我们必须使用强制转换 首先 让我们考虑不进行强制转换的分配 C 2018 6 5 16 1 1 列出了简单赋值的约束

随机推荐

  • 【已解决】NFS客户端写入NFS共享文件夹出错:Permission denied

    原文地址 https www crifan com nfs client write to nfs server share folder error permission denied 背景 折腾 已解决 在远程Ubuntu服务器中开通N
  • 求众数

    示例 1 输入 3 2 3 输出 3 示例 2 输入 2 2 1 1 1 2 2 输出 2 vector声明与调用方法 vector
  • hexo更换icarus主题和美化

    文章目录 页面点击出现爱心 给文章添加目录 添加相册 模块布局 开启评论系统 valine域名绑定 开启打赏功能 全局搜索 首页三栏 阅读两栏 目录固定 默认开启目录 个人信息布局 移动端优化 增加版权说明 增加busuanzi统计 使用阿
  • 华为机试:获取字符串中连续出现次数第k多的字母的次数

    题目描述 给定一个字符串 只包含大写字母 求在包含同一字母的子串中 长度第 k 长的子串的长度 相同字母只取最长的那个子串 输入描述 第一行有一个子串 1 lt 长度 lt 100 只包含大写字母 第二行为 k的值 输出描述 输出连续出现次
  • 手把手教你PXE高效网络装机、Kickstart无人值守安装(详细版)

    目录 一 部署PXE远程安装服务 1 1PXE定义 1 2PXE服务优点 1 3搭建网络体系前提条件 1 4 搭建PXE远程安装服务器 二 实验 2 1 服务器操作 2 2 安装启动TFTP服务并修改TFTP服务的配置文件 2 3 安装并启
  • RHEL8安装FreeIPA服务器

    RHEL8安装FreeIPA服务器 FreeIPA简介 先决条件 FreeIPA 的实验室详细信息 1 设置主机名并安装更新 2 更新hosts文件 3 关闭SELinux 4 在防火墙中允许 FreeIPA 端口 5 安装FreeIPA软
  • mysql8.0默认引擎是什么_新特性解读

    原创作者 杨涛涛 提到MySQL临时表 我们都很熟悉了 一般来说 分为两类 1 MySQL 临时表引擎 名字叫做 Memory 比如 create table tmp1 id int str1 varchar 100 engine memo
  • vue引入JQ的方法

    在vue中引入jq 用vue cli脚手架工具构建项目成功后 当需要引入JQ 可用以下方法 1 首先在package json里的dependencies加入 jquery 3 2 1 2 在终端里输入npm install jquery
  • js对象和包装类

    目录 对象 1 对象的增删改查 2 对象的创建方法 3 构造函数 包装类 对象 跟C 类似 属性和方法的集合 语法如下 var person name xiaoMing age 18 sex male health 100 smoke fu
  • 【华为OD机试】文件目录大小【2023 B卷

    华为OD机试 真题 点这里 华为OD机试 真题考点分类 点这里 题目描述 一个文件目录的数据格式为 目录id 本目录中文件大小 子目录id列表 其中目录id全局唯一 取值范围 1 200 本目录中文件大小范围 1 1000 子目录id列表个
  • DY__ac_signature

    主页中有一个IP的信息 但是请求需要 ac nonce和 ac signature ac nonce是初次请求后服务端返回的 本文分析一下 ac signature怎么来的 文章目录 参数定位 补环境 代码部分 更新 2023 04 20
  • 知识图谱相关会议之观后感分享与学习总结

    2015年6月27日 清华大学FIT楼多功能报告厅 中国中文信息学会青年工委系列学术活动 知识图谱研究青年学者研讨会 由于我毕设是与知识图谱 实体消歧 实体对齐 知识集成相关的 所以去听了这个报告 同时报告中采用手写笔记 所以没有相应的PP
  • HDU-2063过山车

    题目链接 http acm hdu edu cn showproblem php pid 2063 解题思路 匈牙利算法 二分图模板 代码 include
  • Win11未检测到Logitech Unifying接收器的解决方法

    Logitech Unifying接收器利用罗技先进的2 4 GHz无线连接技术 并配有优联接收器连接 此款罗技鼠标可同时带给用户线束的可靠性和无线的方便与自由 今天小编将为大家带来Win11未检测到Logitech Unifying接收器
  • 云计算的三种服务模式:IaaS,PaaS和SaaS

    云 其实是互联网的一个隐喻 云计算 其实就是使用互联网来接入存储或者运行在远程服务器端的应用 数据 或者服务 云也是分层的 任何一个在互联网上提供其服务的公司都可以叫做云计算公司 其实云计算分几层的 分别是Infrastructure 基础
  • InnoDB 和 MyISAM 的索引实现有什么区别 ?

    面试官问 InnoDB 和 MyISAM 的索引实现有什么区别 InnoDB 和 MyISAM 底层都是 B 树的实现啊 难道还有区别吗 虽说二者的底层实现都是 B 树 但是二者却完全不同 主键索引文件存储不同 MyISAM 引擎的索引文件
  • 物联网平台如何为OPC服务器创造新生命力

    在前一篇的 OPC服务器简介和入门介绍 中为大家介绍了OPC的体系结构 传统opc服务器具有的如下几个优势特点 1 支持与不同的供应商沟通 2 消除系统中对自定义驱动程序的需求 3 减少设备负载 4 方便访问数据 这让我们在纷繁的工业设备和
  • Python中的AES解密和加密,爬虫时碰见AES加密怎么办?

    coding utf 8 from Crypto Cipher import AES import base64 import time import json class Decrypt def init self key iv self
  • ARM NEON编译优化

    NEON被设计为附加的加载 存储架构 以提供良好的矢量化 编译器对c c 等语言有良好的支持 这样可以实现很高水平的并行性 开发者可以为需要高性能的应用程序编写NEON指令来实现相应功能 最重要的是它实现了访问交叉存储在内存中的多个数据流并
  • 对解数独问题的归纳

    解数独 我们都可能玩过或者了解知道 就是数独游戏 数独是一种运用纸 笔进行演算的逻辑游戏 玩法 在空格里填入数字1到9 使得每一行 每一列和每一个用粗线围起来的3 3的九个单元格里 填数都包含1到9各一个 而利用电脑怎样实现呢 怎样将我们的