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

LintCode_389 判断数独是否合法

题目

请判定一个数独是否有效。

该数独可能只填充了部分数字,其中缺少的数字用 . 表示。

 注意事项

一个合法的数独(仅部分填充)并不一定是可解的。我们仅需使填充的空格有效即可。

说明

什么是 数独

  • http://sudoku.com.au/TheRules.aspx
  • http://baike.baidu.com/subview/961/10842669.htm
样例

下列就是一个合法数独的样例。

Valid Sudoku

C++代码

 1  void clear(int *s, int n)
 2     {
 3         for(int i = 0; i < n; ++i)
 4             s[i] = 0;
 5     }
 6     bool rol_is_true(int s[], int n)
 7     {
 8         for(int i = 0; i < n; ++i)
 9         {
10             if(s[i] > 1) return false;
11         }
12         return true;
13     }
14     bool isValidSudoku(const vector<vector<char>>& board) {
15         //判断行
16         int s[10];
17         int i, j;
18         
19         for(i = 0; i < 9; ++i)
20         {
21             clear(s, 10);
22             for(j = 0; j < 9; ++j)
23             {
24                 if(board[i][j] != '.') s[board[i][j] - '0']++;
25             }
26             if(!rol_is_true(s, 10)) return false;
27         }
28         //判断列
29         for(i = 0; i < 9; ++i)
30         {
31             clear(s, 10);
32             for(j = 0; j < 9; ++j)
33             {
34                 if(board[j][i] != '.') s[board[j][i] - '0']++;
35             }
36             if(!rol_is_true(s, 10)) return false;
37         }
38         
39         //判断宫
40         int t,k,p;
41         for(t = 0, i = 0; i < 9; ++i)
42         {
43             if(i % 3 == 0) p = i;
44             clear(s, 10);
45             for(j = t; j < t + 3; ++j)
46             {
47                 for(k = p; k <p + 3; ++k)
48                 {
49                     if(board[j][k] != '.') s[board[j][k] - '0']++;
50                 }
51             }
52             if(!rol_is_true(s, 10)) return false;
53             t = (t + 3) % 9;
54         }
55         return true;
56     }
View Code

 

转载于:https://www.cnblogs.com/Smallhui/p/5540835.html

相关文章:

  • Android开发常见错误及技巧
  • 使用Markdown写文档
  • 普通pc安装懒人版的mac 10.10系统安装
  • mybatis-generator 基类继承
  • Spring MVC学习总结(5)——SpringMVC项目关于安全的一些配置与实现方式
  • 神奇的Android Studio Template
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • mysqldump 数据库备份
  • iOS App 启动页
  • 自己动手写RTP服务器——关于RTP协议
  • [转]ASP.NET 成员资格 Part.1(API)
  • uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型 - 大总结,看完全明白了
  • Linux用户和权限管理
  • iOS 宏(define)与常量(const)的正确使用
  • linux系统安装python2.7
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • Docker: 容器互访的三种方式
  • ES6系列(二)变量的解构赋值
  • javascript数组去重/查找/插入/删除
  • REST架构的思考
  • 从伪并行的 Python 多线程说起
  • 大型网站性能监测、分析与优化常见问题QA
  • 构建二叉树进行数值数组的去重及优化
  • 汉诺塔算法
  • 记一次删除Git记录中的大文件的过程
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 一文看透浏览器架构
  • 用jQuery怎么做到前后端分离
  • MyCAT水平分库
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • (10)STL算法之搜索(二) 二分查找
  • (转)3D模板阴影原理
  • (转)winform之ListView
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .describe() python_Python-Win32com-Excel
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • .NET 设计模式初探
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)
  • @AutoConfigurationPackage的使用
  • @RequestBody与@ModelAttribute
  • @SuppressWarnings注解
  • @vue/cli 3.x+引入jQuery
  • [ 云计算 | AWS ] AI 编程助手新势力 Amazon CodeWhisperer:优势功能及实用技巧
  • [100天算法】-实现 strStr()(day 52)
  • [4.9福建四校联考]
  • [AI]ChatGPT4 与 ChatGPT3.5 区别有多大
  • [Android Studio] 开发Java 程序
  • [asp.net core]project.json(2)
  • [CISCN 2019华东南]Web11
  • [datastore@cyberfear.com].Elbie、[thekeyishere@cock.li].Elbie勒索病毒数据怎么处理|数据解密恢复
  • [dts]Device Tree机制
  • [HeMIM]Cl,[AeMIM]Br,[CeEIM]Cl,([HO-PECH-MIM]Cl,[HOOC-PECH-MIM]Cl改性酚醛树脂
  • [Hive] CTE 通用表达式 WITH关键字
  • [ICCV2017]Neural Person Search Machines