题目:就是判断已有的数字是否冲突无效,若无效返回flase 有效返回true 不要求sudo可解

用了char型的数字,并且空格用‘.'来表示的。

思路:只要分别判断横向 竖向 3*3小块中的数字是否有重复或者无效就可以了  就是单纯的麻烦 不难

#include<iostream>
#include<vector>
using namespace std; class Solution {
public:
bool isValidSudoku(vector<vector<char> > &board) {
vector<int> hash;
//纵向判断
for(int c = ; c < ; c++) //对每一列判断
{
hash.clear();
hash.resize(); //每次判断前 hash要清零
for(int r = ; r < ; r++)
{
if(board[r][c] == '.') //空白跳过
{
continue;
}
else if(board[r][c] <= '' && board[r][c] >= '') //是数字
{
if(hash[board[r][c] - ''] != ) //若已经有过 无效
{
return false;
}
else
{
hash[board[r][c] - '']++;
}
}
else //不是空白 不是数字 无效
{
return false;
}
}
}
//横向判断
for(int r = ; r < ; r++) //对每一行判断
{
hash.clear();
hash.resize();
for(int c = ; c < ; c++)
{
if(board[r][c] == '.')
{
continue;
}
else if(board[r][c] <= '' && board[r][c] >= '')
{
if(hash[board[r][c] - ''] != )
{
return false;
}
else
{
hash[board[r][c] - '']++;
}
}
else
{
return false;
}
}
}
//小矩形判断
hash.clear();
hash.resize();
for(int r = ; r < ; r+=) //对每一行判断
{
for(int c = ; c < ; c+=)
{
hash.clear();
hash.resize();
for(int rr = r; rr < r + ; rr++)
{
for(int cc = c; cc < c + ; cc++)
{
if(board[rr][cc] == '.')
{
continue;
}
else if(board[rr][cc] <= '' && board[rr][cc] >= '')
{
if(hash[board[rr][cc] - ''] != )
{
return false;
}
else
{
hash[board[rr][cc] - '']++;
}
}
else
{
return false;
}
}
}
}
}
return true;
}
}; int main()
{
Solution s; vector<vector<char>> sudo;
vector<char> sub;
char c;
for(int i = ; i < ; i++)
{
sub.clear();
for(int j = ; j < ; j++)
{
scanf("%c ", &c);
sub.push_back(c);
}
sudo.push_back(sub);
} bool b = s.isValidSudoku(sudo); return ;
}

最新文章

  1. sql server几种读写分离方案的比较
  2. jQuery 插件简单模板
  3. Python学习笔记16—电子表格
  4. 多线程同步 wait notify
  5. Sqli-labs less 56
  6. 制作嵌入式linux文件系统(ramdisk,cramfs,squashfs)
  7. 1.7.4.1 Function Queries-函数查询
  8. QTREE3 spoj 2798. Query on a tree again! 树链剖分+线段树
  9. BZOJ3404: [Usaco2009 Open]Cow Digit Game又见数字游戏
  10. python批量下载
  11. AVL树 高度平衡的二叉查找树
  12. php fsockopen
  13. 在vmware 中使用桥连接 连接到网络
  14. centos命令安装
  15. redis的缓冲击穿|缓冲雪崩|缓冲淘汰
  16. IOS 开发体验测试问题
  17. django 生成动态的PDF文件
  18. char和varchar、浮点数和定点数
  19. Linux第九周作业
  20. 2018.09.27 codeforces1045D. Interstellar battle(期望dp)

热门文章

  1. Linux运维初级教程(一)Shell脚本
  2. [译]Mongoose指南 - 查询
  3. eclipse svn快捷键
  4. Linux 修改主机名 和 ip 映射关系
  5. 63.Hbase 常用命令
  6. .net的一些新语法的整理
  7. JS快速获取图片宽高的方法
  8. [POJ3277]City Horizon
  9. Linux的后台执行进程之nohup
  10. 08.01 签到! js 作用域