有效的数独

请你判断一个 9x9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。

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

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

注意:

  • 一个有效的数独(部分已被填充)不一定是可解的。
  • 只需要根据以上规则,验证已经填入的数字是否有效即可。

示例 1:

输入:board =
[["5","3",".",".","7",".",".",".","."]
,["6",".",".","1","9","5",".",".","."]
,[".","9","8",".",".",".",".","6","."]
,["8",".",".",".","6",".",".",".","3"]
,["4",".",".","8",".","3",".",".","1"]
,["7",".",".",".","2",".",".",".","6"]
,[".","6",".",".",".",".","2","8","."]
,[".",".",".","4","1","9",".",".","5"]
,[".",".",".",".","8",".",".","7","9"]]
输出:true

示例 2:

输入:board =
[["8","3",".",".","7",".",".",".","."]
,["6",".",".","1","9","5",".",".","."]
,[".","9","8",".",".",".",".","6","."]
,["8",".",".",".","6",".",".",".","3"]
,["4",".",".","8",".","3",".",".","1"]
,["7",".",".",".","2",".",".",".","6"]
,[".","6",".",".",".",".","2","8","."]
,[".",".",".","4","1","9",".",".","5"]
,[".",".",".",".","8",".",".","7","9"]]
输出:false
解释:除了第一行的第一个数字从 5 改为 8 以外,空格内其他数字均与 示例1 相同。 但由于位于左上角的 3x3 宫内有两个 8 存在, 因此这个数独是无效的。

提示:

  • board.length == 9
  • board[i].length == 9
  • board[i][j] 是一位数字或者 '.'

以下程序实现了这一功能:

#include <bits/stdc++.h>
using namespace std;
class Solution
{
public:bool isValidSudoku(vector<vector<char>> &board){for (int i = 0; i < board.size(); i++){vector<bool> mark(10);for (int j = 0; j < board.size(); j++){if (!valid(board, mark, i, j)){return false;}}}for (int j = 0; j < board.size(); j++){vector<bool> mark(10);for (int i = 0; i < board.size(); i++){if (!valid(board, mark, i, j)){return false;}}}for (int k = 0; k < board.size(); k++){int sr = k / 3 * 3;int sc = (k % 3) * 3;vector<bool> mark(10);for (int i = sr; i < sr + 3; i++){for (int j = sc; j < sc + 3; j++){if (!valid(board, mark, i, j)){return false;}}}}return true;}
private:bool valid(vector<vector<char>> &board, vector<bool> &mark, int i, int j){if (board[i][j] != '.'){int index = board[i][j] - '0';if (mark[index]){return false;}else{mark[index] = 1;}}return true;}
};

(每日一练c++)有效的数独相关推荐

  1. (每日一练c++)CC113 数独

    描述 请编写一个程序,给数独中的剩余的空格填写上数字 空格用字符'.'表示 假设给定的数独只有唯一的解法 这盘数独的解法是: 红色表示填上的解 示例1 输入: [[.,.,9,7,4,8,.,.,.] ...

  2. (每日一练c++)解数独

    解数独 编写一个程序,通过填充空格来解决数独问题. 数独的解法需 遵循如下规则: 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. 数字 1-9 在每一个以粗实线分隔的 3x ...

  3. Python每日一练0023

    问题 如何判断一个文件是否存在 解决方案 这个问题可以分成几类问题 如果这里的文件指的是文件或目录,我们可以用os.path.exists()方法 >>> import os > ...

  4. WindowsAPI每日一练(2) 使用应用程序句柄

    WindowsAPI每日一练系列 :https://www.cnblogs.com/LexMoon/category/1246238.htmlWindowsAPI每日一练(1) WinMain Win ...

  5. python题目关于企业利润_【每日一练】巧用python实现利润计算

    原标题:[每日一练]巧用python实现利润计算 相信很多小伙伴都遇到过阶梯利率的问题,比如说银行的利息计算,不同阶段的本金有不同的利率:税务的税费计算,不同的营收有不同的缴纳率:个人的提成,不同的销 ...

  6. Python每日一练0004

    问题 如何保存迭代对象的最后N个元素 例如保存列表['a', 'b', 'c', 'd']的最后2个元素 或者保存某个迭代器对象的最后5个元素 解决方案 对于列表.元组这样的数据结构,可以使用切片来很 ...

  7. python 编程一日一练-python每日一练

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 过滤掉列表中的负数 筛选出字典{lilei: 79,jim: 88,lu ...

  8. python 编程一日一练-「每日一练」巧用python生成随机数

    原标题:「每日一练」巧用python生成随机数 随机数在我们的生产和生活中有很多的应用场景,比如说登录验证的随机数字等等,那么你知道在Python中怎么生成随机数吗? 往下看,就是这么简单! 题目 p ...

  9. python输出乘法口诀-【每日一练】python输出 9*9 乘法口诀表

    原标题:[每日一练]python输出 9*9 乘法口诀表 无论学哪种程序,哪一门语言都对输出9*9 乘法口诀表情有独钟,记得学VB的时候,需要好长一段代码才实现,那么你知道用Python输出,需要几行 ...

  10. python 编程一日一练-Python每日一练0022

    问题 你想在一个文件里每次读入固定大小的字节,比如每次读入4个字节并转成int,或者每次读入x个字节并进行结构化,例如: l = [5, 2, 4, 1, 2, 4, 5, 6, 8] with op ...

最新文章

  1. 读源码Apache-commons-lang3-3.1(三)
  2. Policy Injection Application Block
  3. canvas绘制经典折线图(一)
  4. Redis中的事务和watch(乐观锁)
  5. Installing specific major Java JDK versions on OS X via Homebrew
  6. Android 系统(263)---Glide框架
  7. 认识大数据分析的四大误区
  8. 元类介绍、自定制元类
  9. nodejs真的是单线程吗?
  10. JVM(三)——类结构与类加载器
  11. ##spss软件学习笔记20181031
  12. “元宇宙”是个啥?都有哪些大招?
  13. 华为荣耀黑科技,打造震撼AI智能机
  14. feifeicms 人物标签调用
  15. 2022CPA财务成本管理-企业管理专题Corporate Goverance【完结】
  16. 广州车展直击:全新“机甲科技”沙龙机甲龙全球首发
  17. 手写JavaScript
  18. 网狐大联盟机器管理工具编译与使用
  19. 使用电脑修改apk图标和名字
  20. 程序员考公指南:逃离996的最强出路,拒绝秃顶的最佳方法

热门文章

  1. iPhone 邮件html设置,iphone手机邮件设置教程
  2. 使用flex让父盒子内子盒子自适应宽度
  3. android 紫外线传感器,Arduino光线传感器-UV Sensor V1.0-ML8511紫外线传感器
  4. 论文排版之参考文献的自动生成、设置格式及引用
  5. 2018.8.18梦中的凶杀案
  6. vivoy85a参数配置_vivoY85A基本配置参数?
  7. MySQL 数据库删除操作中的 delete、drop、 truncate 区别在哪?
  8. Exp6 信息搜集与漏洞扫描 20164302 王一帆
  9. ceph存储 pg归置组处于stuck以及degraded状态解决方案
  10. dalao自动报表邮件2.0