博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1005. 数独
阅读量:2385 次
发布时间:2019-05-10

本文共 4351 字,大约阅读时间需要 14 分钟。

题目来源:

题目描述

数独游戏,具体规则如下:

每一行都用到1,2,3,4,5,6,7,8,9, 位置不限,

每一列都用到1,2,3,4,5,6,7,8,9, 位置不限,

每3*3的格子(共9个这样的格子)都用到1,2,3,4,5,6,7,8,9, 位置不限,

游戏过程就是用1,2,3,4,5,6,7,8,9填充空白,并满足每行,每列,每个九宫格都用到1,2,3,4,5,6,7,8,9,

如下是个正确的sudoku:

数独

输入格式

输入n个数独,你来验证它是否违反规则。

第一行为数独个数,第二行开始为第一个数独,之后第二个,至第n个。

注意:每个数独间有个回车隔开。

输出格式

若正确则输出"Right",否则输出"Wrong", 输出一个换一行。

说明

1<=n<=20(输入的数独个数)

不论输入的数独是否正确,数据保证每个数都在1-9间。

Sample Input

25 8 1 4 9 3 7 6 29 6 3 7 1 2 5 8 42 7 4 8 6 5 9 3 11 2 9 5 4 6 3 7 84 3 6 1 8 7 2 9 57 5 8 3 2 9 1 4 68 9 2 6 7 1 4 5 36 1 5 9 3 4 8 2 73 4 7 2 5 8 6 1 91 2 3 4 5 6 7 8 92 3 4 5 6 7 8 9 13 4 5 6 7 8 9 1 24 5 6 7 8 9 1 2 35 6 7 8 9 1 2 3 46 7 8 9 1 2 3 4 57 8 9 1 2 3 4 5 68 9 1 2 3 4 5 6 79 1 2 3 4 5 6 7 8

 

Sample Output

RightWrong

 

解题:

  此题只是对传统数独的校验,较为简单,分别校验行,列,小块

答案:

import java.util.HashSet;import java.util.Scanner;public class Main {    public static void main(String[] args) {        Scanner sc = new Scanner(System.in);        int n = sc.nextInt();        int[][][] sudoku = new int[n][9][9];        boolean[] check = new boolean[n];        for (int i = 0; i < n; i++) {            check[i] = true;            for (int j = 0; j < 9; j++) {                HashSet
seth = new HashSet(); for (int k = 0; k < 9; k++) { sudoku[i][j][k] = sc.nextInt(); seth.add(sudoku[i][j][k]); } if (seth.size() < 9) { check[i] = false; } } } for (int i = 0; i < n; i++) { if (check[i]) { for (int j = 0; j < 9; j++) { HashSet setl = new HashSet(); for (int k = 0; k < 9; k++) { setl.add(sudoku[i][k][j]); } if (setl.size() < 9) { check[i] = false; } } } } for (int i = 0; i < n; i++) { if (check[i]) { for (int j = 0; j < 9; j++) { HashSet set = new HashSet(); int countl = 0; for (int k = 0; k < 3; k++) { int counth = 0; for (int l = 0; l < 3; l++) { set.add(sudoku[i][k + countl][l + counth]); } counth += 3; } countl += 3; if (set.size() < 9) { check[i] = false; } } } } for (int i = 0; i < n; i++) { System.out.println(check[i] ? "Right" : "Wrong"); } }}

or

import java.util.Arrays;import java.util.Scanner; public class Main {     private static Scanner in;     public static void main(String[] args) {        in = new Scanner(System.in);        int n = in.nextInt();        outer:        for(int t=0;t

 or

#include 
#include
using namespace std;bool isunique(int a[]){ bool flag = true; sort(a, a + 9); for (int i = 0; i < 9; i++) if (a[i] != i + 1) { flag = false; break; } return flag;}string issudoku(){ string si; int su[9][9], s[9]; for (int i = 0; i < 9; i++) for (int j = 0; j < 9; j++) cin >> su[i][j]; bool flag = true; for (int i = 0; i < 9; i++) { for (int j = 0; j < 9; j++) s[j] = su[i][j]; if (!isunique(s)) { flag = false; break; } } for (int i = 0; i < 9; i++) { for (int j = 0; j < 9; j++) s[j] = su[j][i]; if (!isunique(s)) { flag = false; break; } } for (int i = 0; i < 9; i += 3) for (int j = 0; j < 9; j += 3) { for (int m = 0; m < 3; m++) for (int n = 0; n < 3; n++) s[3 * m + n] = su[i + m][j + n]; if (!isunique(s)) { flag = false; break; } } if (flag) si = "Right"; else si = "Wrong"; return si;}int main(){ int n; cin >> n; string s[20]; for (int i = 0; i < n; i++) s[i] = issudoku(); for (int i = 0; i < n; i++) cout << s[i] << endl; return 0;}

 

posted @
2019-05-15 15:47 阅读(
...) 评论(
...)

转载地址:http://pgcab.baihongyu.com/

你可能感兴趣的文章
各行业都爱用什么编程语言开发?
查看>>
css3实现ps蒙版效果以及动画,炫酷吊炸天!
查看>>
程序员休息时间接私活遭公司辞退,不明觉厉?
查看>>
CSS 、JS实现浪漫流星雨动画
查看>>
新手网站建设指南(2)
查看>>
新手网站建设优化,这些网站为你提供数之不尽的免费素材!(3)
查看>>
HTML特殊字符显示(常用到的特殊符号,箭头相关,数学相关,标点,符号相关等)...
查看>>
40岁的程序员找不到工作,原来码农真的是碗青春饭
查看>>
2018年前端性能优化总结,这也是我做程序员的第五个年头了
查看>>
前端进阶(三)从0到1学AJAX,这篇就够了!
查看>>
强大的CSS:实现平行四边形布局效果
查看>>
强大的CSS:var变量的局部作用域(继承)特性
查看>>
强大的CSS: 使用“变量种子计数器”扩展动画更多可能性
查看>>
强大的CSS:focus-visible伪类真的太6了!
查看>>
强大的CSS:3种姿势实现26个英文字母的案例
查看>>
强大的CSS:placeholder-shown伪类实现Material Design占位符交互效果
查看>>
强大的CSS:图形绘制合集,方便你我!
查看>>
强大的CSS:scroll-snap滚动事件停止及元素位置检测
查看>>
程序员30岁前,月薪达不到30K,该何去何从?
查看>>
只要记住这五点,学习任何新编程语言都不是问题
查看>>