当前位置:网站首页>Judge whether it is Sudoku
Judge whether it is Sudoku
2022-07-02 08:41:00 【Tutu is a cat】
subject
Sudoku is a popular number filling game . The most typical Sudoku by 9*9 It's made up of squares , There will be some 1~ 9 The number of . Players need to fill in the numbers of the remaining grids , Make the row where each grid is located 、 Column 、 The small nine palaces contain 1~9 The number of , No weight, no leakage .
Now Xiao Ming has finished some Sudoku games with all the numbers filled in , Preparing to excavate . But before that , He wants you to check whether the problem surface is correct , That is, whether each grid of the completed question surface meets the line 、 Column 、 The little nine palaces contain 1~9.
Input
Enter a number in the first line T, Indicates the number of Sudoku puzzles Xiao Ming has completed .
After that, enter a total of 9 That's ok , Each row 9 The number is separated by a space , Indicates the number in the completed Sudoku .
Output
The output, T That's ok , A string on each line indicates whether the Sudoku is correct .
Output correctly "YES", If there is an error, output "NO".
Data range
about 100% The data of ,1≤T≤5,1≤ Every number ≤9.
sample input
2
7 6 2 5 9 3 1 4 8
9 4 1 2 7 8 5 3 6
8 3 5 4 6 1 7 9 2
1 9 8 6 2 7 3 5 4
4 7 6 3 5 9 2 8 1
2 5 3 8 1 4 6 7 9
3 8 7 1 4 6 9 2 5
5 1 4 9 3 2 8 6 7
6 2 9 7 8 5 4 1 3
8 1 4 7 3 2 6 5 9
9 2 3 6 5 8 1 4 7
5 7 6 4 9 1 2 8 3
3 4 5 2 6 7 8 9 1
1 8 9 3 4 5 3 2 6
2 6 7 1 8 9 5 3 4
7 5 1 9 2 4 7 6 8
4 3 8 5 7 6 9 1 2
6 9 2 8 1 3 4 7 5
sample output
YES
NO
Answer key
Go Language implementation
package main
import (
"fmt"
)
func main() {
// Input
var T int
fmt.Scan(&T)
if T < 1 || T > 5 {
fmt.Println("T Out of range ")
return
}
flag := true
var result [5] bool
for i := 0; i < T; i++ {
// Input array
var c [9][9] int
for i := 0; i < 9; i++ {
for j := 0; j < 9 ; j++ {
var num int
fmt.Scan(&num)
c[i][j] = num
}
}
for n := 0; n < 9 ; n++ {
// Better
if isRepetition(c[n]) {
flag = false
break
}
// Comparison column
var col [9] int
for k := 0; k < 9 ;k++ {
col[k] = c[k][n]
}
if isRepetition(col){
flag = false
break
}
}
if flag {
// squared paper for practicing calligraphy
var nine [9] int
for n := 0 ; n < 7; n++{
for k := 0 ; k < 7; k++{
nine[0] = c[n][k]
nine[1] = c[n+1][k]
nine[2] = c[n][k+1]
nine[3] = c[n+2][k]
nine[4] = c[n][k+2]
nine[5] = c[n+2][k+1]
nine[6] = c[n+1][k+2]
nine[7] = c[n+1][k+1]
nine[8] = c[n+2][k+2]
}
}
if isRepetition(nine) {
result[i] = false
}else {
result[i] = true
}
}else {
result[i] = false
}
}
for i := 0; i < T ; i++{
if result[i] {
fmt.Println("YES")
}else {
fmt.Println("NO")
}
}
}
// In the array 9 Whether the number is repeated
func isRepetition(numChar [9] int) bool {
for i := 0 ; i < len(numChar)-1; i++ {
for j := i+1; j < len(numChar); j++ {
if numChar[i] == numChar[j] {
return true
}
}
}
return false
}
边栏推荐
- OpenFeign 簡單使用
- 链表经典面试题(反转链表,中间节点,倒数第k个节点,合并分割链表,删除重复节点)
- Sqli labs level 12
- Use C language to receive JSON strings
- First week of JS study
- How to apply for a secondary domain name?
- DWORD ptr[]
- Generate database documents with one click, which can be called swagger in the database industry
- [blackmail virus data recovery] suffix Crylock blackmail virus
- 旋转链表(图解说明)
猜你喜欢
Detailed explanation of NIN network
OpenShift构建镜像
Minecraft安装资源包
双向链表的实现(双向链表与单向链表的简单区别联系和实现)
kubernetes部署loki日志系统
C language custom types - structure, bit segment (anonymous structure, self reference of structure, memory alignment of structure)
OpenShift 容器平台社区版 OKD 4.10.0部署
HackTheBox-Gunship
OpenFeign 簡單使用
File upload Labs
随机推荐
2022 Heilongjiang latest food safety administrator simulation exam questions and answers
Web技术发展史
HCIA—應用層
c语言自定义类型枚举,联合(枚举的巧妙使用,联合体大小的计算)
web安全--逻辑越权
PCL calculates the intersection of three mutually nonparallel planes
kubeadm部署kubernetes v1.23.5集群
Deep understanding of JVM
sqli-labs第12关
Tcp/ip - transport layer
HCIA—应用层
What is SQL injection
Openfeign facile à utiliser
Chrome debugging
Sqli labs Level 2
Application of kotlin - higher order function
zipkin 简单使用
HCIA—数据链路层
Learning C
OpenShift 部署应用