美文网首页
上交OJ-1005. 数独

上交OJ-1005. 数独

作者: code猪 | 来源:发表于2018-05-11 10:11 被阅读11次

1005. 数独


题目描述

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

每一行都用到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,

输入格式

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

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

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

输出格式

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

说明

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

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

Sample Input

2
5 8 1 4 9 3 7 6 2
9 6 3 7 1 2 5 8 4
2 7 4 8 6 5 9 3 1
1 2 9 5 4 6 3 7 8
4 3 6 1 8 7 2 9 5
7 5 8 3 2 9 1 4 6
8 9 2 6 7 1 4 5 3
6 1 5 9 3 4 8 2 7
3 4 7 2 5 8 6 1 9

1 2 3 4 5 6 7 8 9
2 3 4 5 6 7 8 9 1
3 4 5 6 7 8 9 1 2
4 5 6 7 8 9 1 2 3
5 6 7 8 9 1 2 3 4
6 7 8 9 1 2 3 4 5
7 8 9 1 2 3 4 5 6
8 9 1 2 3 4 5 6 7
9 1 2 3 4 5 6 7 8

Sample Output

Right
Wrong

分析

对每个矩阵直接验证,先横,再竖,然后每个小矩阵。

#include <iostream>

using namespace std;

int main()
{
    int n;
    int check[9];
    int input[9][9];
    int i,j,k,t;
    int a,b,c;
    int result[20];
    char enter;
    
    cin>>n;
    for(i=0;i<n;i++)
        result[i]=1;
    
    for(i=0;i<n;i++) {
        for(a=0;a<9;a++) { //输入并检查横线
            for(j=0;j<9;j++)
                check[j]=0;
            for(b=0;b<9;b++)
            {
                cin>>input[a][b];
                check[input[a][b]-1]++;
                if(check[input[a][b]-1]>1)
                {
                    result[i]=0;
                }
            }
        }
        for(b=0;b<9;b++) {//检查竖线
            if(!result[i])
                break;
            for(j=0;j<9;j++)
                check[j]=0;
            for(a=0;a<9;a++) {
                check[input[a][b]-1]++;
                if(check[input[a][b]-1]>1) {
                    result[i]=0;
                    break;
                }
            }
        }
        for(k=0;k<3;k++) { //检查小矩阵
            if(!result[i])
                break;
            for(t=0;t<3;t++) {
                for(j=0;j<9;j++)
                    check[j]=0;
                for(a=0;a<3;a++) {
                    for(b=0;b<3;b++) {
                        check[input[k*3+a][t*3+b]-1]++;
                        if(check[input[k*3+a][t*3+b]-1]>1) {
                            result[i]=0;
                            break;
                        }
                    }
                }
            }
        }
    }
    
    for(i=0;i<n;i++) {
        if(result[i])
            cout<<"Right"<<endl;
        else
            cout<<"Wrong"<<endl;
    }
    return 0;
}

相关文章

  • 上交OJ-1005. 数独

    1005. 数独 题目描述 数独游戏,具体规则如下: 每一行都用到1,2,3,4,5,6,7,8,9, 位置不限,...

  • 数独数独

    想找人一起玩数独,你在哪?

  • 数独数独我爱你

    好久没玩数独了,昨天在图书馆借书时突发奇想查了有关数独的书,有好多!借了一本非常数独,回家就迫不及待地翻阅,哇塞,...

  • 数独

    一款拥有几十年历史的数字益智游戏,5种宫格,3种难度,适合各种水平,最接地气的数独游戏。 游戏特性: -- 每种难...

  • 数独

    现在,我每周天几乎都上的数独,直到上周天我全部学完了数独的六堂课。 在课上,我们学习了四宫格与六宫...

  • 数独

    学习目标 1、经历填数游戏活动,初步提高分析推理能力。 2、在探索、尝试、交流等活动中,体会填数游...

  • 数独

    这是一款集合了数独、方块、圈圈消消乐以及疯狂球球的合集游戏,画面精美,操作简单,经典数独与球球考验思维、方块与圈圈...

  • 数独

    全新数独游戏,无限个数独关卡,简单操作下的无穷乐趣! 玩好数独游戏首先要了解它的特点、要求,然后要运用一些原则和技...

  • 数独

    最近我参加了一个数独班,虽然我之前有学过一点点的基础,但是应该用什么规律来解,我并不是很清楚。而刚好通过...

  • 数独

    数独游戏是对智慧和毅力的考验。在这看似简单的小小一方九宫格上,用自己所有的想象力、逻辑推理和创新思维,去感悟游走在...

网友评论

      本文标题:上交OJ-1005. 数独

      本文链接:https://www.haomeiwen.com/subject/yuaxdftx.html