当前位置:网站首页>Stroke Practice - 62 Valid Sudokus
Stroke Practice - 62 Valid Sudokus
2022-08-10 11:34:00 【qq_43403657】
62 有效的数独
1.问题描述
判断一个 9x9 的数独是否有效.只需要根据以下规则,验证已经填入的数字是否有效即可:
数字 1-9 在每一行只能出现一次.
数字 1-9 在每一列只能出现一次.
数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次.
上图是一个部分填充的有效的数独.
数独部分空格内已填入了数字,空白格用 ‘.’ 表示.
示例 1:
输入:
53…7…
6…195…
.98…6.
8…6…3
4…8.3…1
7…2…6
.6…28.
…419…5
…8…79
输出: true
示例 2:
输入:
83…7…
6…195…
.98…6.
8…6…3
4…8.3…1
7…2…6
.6…28.
…419…5
…8…79
输出: false
解释: 除了第一行的第一个数字从 5 改为 8 以外,空格内其他数字均与 示例1 相同.
但由于位于左上角的 3x3 宫内有两个 8 存在, 因此这个数独是无效的.
说明:
一个有效的数独(部分已被填充)不一定是可解的.
只需要根据以上规则,验证已经填入的数字是否有效即可.
给定数独序列只包含数字 1-9 和字符 ‘.’ .
给定数独永远是 9x9 形式的.
可使用以下main函数:
int main()
{
vector<vector<char> > board;
char ch;
for(int i=0; i<9; i++)
{
vector<char> aLine;
for(int j=0; j<9; j++)
{
cin>>ch;
aLine.push_back(ch);
}
board.push_back(aLine);
}
bool res=Solution().isValidSudoku(board);
cout<<(res?"true":"false")<<endl;
return 0;
}
2.输入说明
输入9行,每行9个字符,只包含数字 1-9 和字符 ‘.’
3.输出说明
输出true或false
4.范例
输入
83…7…
6…195…
.98…6.
8…6…3
4…8.3…1
7…2…6
.6…28.
…419…5
…8…79
输出
false
5.代码
#include<iostream>
#include<map>
#include<string>
#include<unordered_map>
#include<algorithm>
#include<string.h>//memset函数
using namespace std;
bool cmp(pair<char, int> a, pair<char, int>b)
{
return a.second == b.second?a.first<b.first:a.second>b.second;//The most crucial part of the question,注意写法!
}
string OrderbyChar(string s)
{
//给定一个字符串,请将字符串里的字符按照出现的频率降序排列,如果频率相同,Then according to the characterASCII码升序排列.
string res;//结果字符串
unordered_map<char, int>hash;//记录每个字符出现次数
vector<pair<char, int> > v;//使用pair记录对应关系
for (auto c : s)//遍历字符串
hash[c]++;
for (auto it : hash)
v.emplace_back(it);//directly to eachhash元素插入v中
sort(v.begin(), v.end(), cmp);
for (int i = 0; i < v.size(); i++)
{
while (v[i].second--)
res += v[i].first;
}
return res;
}
bool isValidSudoku(vector<vector<char> > board)
{
//规则1:数字 1-9 在每一行只能出现一次
//规则2:数字 1-9 在每一列只能出现一次
//规则3:数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次
int rows[9][9];//rows[i][index]代表第i行中index出现的次数
int columns[9][9];//columns[j][index]代表第j列中index出现的次数
int subboxes[3][3][9];//subboxes[i][j][index]Represents the small nine-square gridindex出现的次数
//初始化
memset(rows, 0, sizeof(rows));
memset(columns, 0, sizeof(columns));
memset(subboxes, 0, sizeof(subboxes));
//进行遍历,统计出现次数
for (int i = 0; i < 9; i++)
{
for (int j = 0; j < 9; j++)
{
char ch = board[i][j];
if (ch != '.')//处理数字
{
int index = ch - '0' - 1;//This is to prevent subscript overflow,将所有index减一
rows[i][index]++;
columns[j][index]++;
subboxes[i/3][j/3][index]++;
//Each time a number is processed, it is checked whether the number of occurrences of each number is otherwise the rule1-3
if (rows[i][index] > 1 || columns[j][index] > 1 || subboxes[i / 3][j / 3][index] > 1)
return false;
}
}
}
return true;
}
int main()
{
vector<vector<char> > board;
char ch;
for (int i = 0; i < 9; i++)
{
vector<char> aLine;
for (int j = 0; j < 9; j++)
{
cin >> ch;
aLine.push_back(ch);
}
board.push_back(aLine);
}
bool res = isValidSudoku(board);
cout << (res ? "true" : "false") << endl;
return 0;
}
边栏推荐
- 3款不同类型的自媒体免费工具,有效提高创作、运营效率
- L2 applications from a product perspective: why is it a playground?
- HCIP ---- VLAN
- 力扣练习——64 最长和谐子序列
- Introduction to Software Architecture
- 蔚来-软件开发工程师一面记录
- VSCode远程连接服务器报错:Could not establish connection to “xxxxxx”的可能错误原因及解决
- 2022年裁员潮,失业程序员何去何从?
- Intel pushes 20220809 CPU microcode update to patch Intel-SA-00657 security vulnerability
- POJ 2891 Strange Way to Express Integers (扩展欧几里得)
猜你喜欢
随机推荐
基于UiAutomator2+PageObject模式开展APP自动化测试实战
微信小程序,全局变量一个地方改变了其他地方的状态也跟着改变。
rider内Mono脚本找不到引用资源
Article take you understand interrupt the key driver of polling mechanism
从产品角度看 L2 应用:为什么说这是一个游乐场?
Open Office XML 格式里如何描述多段具有不同字体设置的段落
Alibaba最新神作!耗时182天肝出来1015页分布式全栈手册太香了
4 of huawei offer levels, incredibly side is easing the bit in the interview ali?
快速上手,征服三种不同分布式架构调用方案
StoneDB 文档捉虫活动第一季
第5章相似矩阵及二次型(4)
Will SQL and NoSQL eventually converge?
机器学习之暴力调参案例
内存问题难定位,那是因为你没用ASAN
【勇敢饭饭,不怕刷题之链表】链表反转的几种情况
【电商运营】你真的了解社交媒体营销(SMM)吗?
ISO9001在讲什么?过程方法和风险思维
Kyligence 通过 SOC 2 Type II 审计,以可信赖的企业级产品服务全球客户
做自媒体月入几万?博主们都在用的几个自媒体工具
What is affecting MySQL performance?