当前位置: 首页 > news >正文

8627 数独

为了判断数独解是否合法,我们需要遵循以下步骤:

1. **检查每一行**:确保1到9每个数字在每一行中只出现一次。
2. **检查每一列**:确保1到9每个数字在每一列中只出现一次。
3. **检查每个3x3的宫**:确保1到9每个数字在每个3x3的宫中只出现一次。

对于每个case,我们将执行上述三个检查。如果所有检查都通过,则输出"YES",表示解是合法的;如果任何检查失败,则输出"NO",表示解不合法。

下面是实现这一逻辑的C++代码:


#include <iostream>
#include <vector>
using namespace std;bool checkRow(const vector<vector<int>>& sudoku, int row) {vector<bool> seen(10, false);for (int num : sudoku[row]) {if (seen[num]) return false;seen[num] = true;}return true;
}bool checkColumn(const vector<vector<int>>& sudoku, int col) {vector<bool> seen(10, false);for (int i = 0; i < 9; ++i) {int num = sudoku[i][col];if (seen[num]) return false;seen[num] = true;}return true;
}bool checkSquare(const vector<vector<int>>& sudoku, int startRow, int startCol) {vector<bool> seen(10, false);for (int row = 0; row < 3; ++row) {for (int col = 0; col < 3; ++col) {int num = sudoku[startRow + row][startCol + col];if (seen[num]) return false;seen[num] = true;}}return true;
}bool isValidSudoku(const vector<vector<int>>& sudoku) {for (int i = 0; i < 9; ++i) {if (!checkRow(sudoku, i) || !checkColumn(sudoku, i)) return false;}for (int row = 0; row < 9; row += 3) {for (int col = 0; col < 9; col += 3) {if (!checkSquare(sudoku, row, col)) return false;}}return true;
}int main() {int T;cin >> T;while (T--) {vector<vector<int>> sudoku(9, vector<int>(9));for (int i = 0; i < 9; ++i) {for (int j = 0; j < 9; ++j) {cin >> sudoku[i][j];}}cout << (isValidSudoku(sudoku) ? "YES" : "NO") << endl;}return 0;
}

这段代码首先定义了几个辅助函数来检查数独的行、列和3x3宫是否满足条件。然后,`isValidSudoku`函数使用这些辅助函数来判断整个数独是否合法。最后,`main`函数读取输入并对每个case调用`isValidSudoku`函数,根据返回值输出相应的结果。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 深度学习调参基础
  • MySQL DDL
  • 使用Docker制作python项目镜像
  • DP(2) | Java | LeetCode 62, 63, 343, 96 做题总结(96 未完)
  • 7月11日学习打卡,数据结构栈
  • vue3项目打包的时候,怎么区别测试环境,和本地环境
  • 代码随想录算法训练营第9天
  • 142. 两个字符串的最小 ASCII 删除总和(卡码网周赛第二十五期(23年B站笔试真题))
  • java使用easypoi模版导出word详细步骤
  • 我被手机所伤,竟如此憔悴。
  • 假期笔记1:anaconda的安装与pycharm中的引用
  • Linux 程序卡死的特殊处理
  • 进度条提示-在python程序中使用避免我误以为挂掉了
  • 微服务的分布式事务解决方案
  • Linux 初识
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • 【Amaple教程】5. 插件
  • 【Leetcode】104. 二叉树的最大深度
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • ES6语法详解(一)
  • java正则表式的使用
  • js学习笔记
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • Mithril.js 入门介绍
  • oschina
  • 初识 beanstalkd
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 如何编写一个可升级的智能合约
  • 设计模式走一遍---观察者模式
  • 物联网链路协议
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ###C语言程序设计-----C语言学习(6)#
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • (152)时序收敛--->(02)时序收敛二
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (附源码)ssm码农论坛 毕业设计 231126
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (数据结构)顺序表的定义
  • (五)MySQL的备份及恢复
  • (一)SpringBoot3---尚硅谷总结
  • (译)计算距离、方位和更多经纬度之间的点
  • (转)jQuery 基础
  • (转)Sublime Text3配置Lua运行环境
  • .NET C#版本和.NET版本以及VS版本的对应关系
  • .NET Core跨平台微服务学习资源
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .NET 直连SAP HANA数据库
  • .NetCore项目nginx发布
  • .Net转前端开发-启航篇,如何定制博客园主题
  • //解决validator验证插件多个name相同只验证第一的问题
  • [ 物联网 ]拟合模型解决传感器数据获取中数据与实际值的误差的补偿方法