zoukankan      html  css  js  c++  java
  • 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,

    如下是个正确的sudoku:

    数独

    输入格式

    输入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 a,n;
        int b[27][10];
        //freopen("input.txt","r",stdin);
        cin>>n;
        while(n-->0){
            for(int i=0;i<27;i++){
                for(int j=0;j<10;j++){
                    b[i][j]=0;
                }
            }
            for(int i=0;i<9;i++){
                for(int j=0;j<9;j++){
                    cin>>a;
                    b[i][a]++;
                    b[9+j][a]++;
                    if(i<3){
                        if(j<3){
                            b[18][a]++;
                        }else{
                            if(j<=5){
                                b[19][a]++;
                            }
                            else{
                                b[20][a]++;
                            }
                        }
                    }
                    else{
                        if(i<=5){
                            if(j<3){
                                b[21][a]++;
                            }else{
                                if(j<=5){
                                    b[22][a]++;
                                }
                                else{
                                    b[23][a]++;
                                }
                            }                        
                               }
                               else {
                                if(j<3){
                                    b[24][a]++;
                                }else{
                                    if(j<=5){
                                        b[25][a]++;
                                    }
                                    else{
                                        b[26][a]++;
                                    }
                                }                               
                               }
                    }
                }
            }
            bool flag=true;
            for(int i=0;i<27;i++){
                for(int j=1;j<10;j++){
                    if(b[i][j]!=1){
                        flag=false;
                        break;
                    }
                }
            }
            /*
            for(int i=0;i<27;i++){
                for(int j=0;j<10;j++){
                    cout<<b[i][j]<<" ";
                }
                cout<<endl;
            }
            */
            if(flag){
                cout<<"Right"<<endl;
            }else{
                cout<<"Wrong"<<endl;
            }
        }
        return 0;
    }
  • 相关阅读:
    Linux下autoconf和automake使用
    (转)跟我一起写MAKEFILE
    软件源(Software Sources)
    我的攒机(zuosi)过程
    《软件可靠性方法》笔记(一)---第二章 预备知识
    初识java泛型
    配置React Native的开发环境
    IOS原生方法实现二维码生成与扫描
    12个非常不错的免费HTML后台管理模板
    iOS 集成银联支付
  • 原文地址:https://www.cnblogs.com/bernieloveslife/p/7778344.html
Copyright © 2011-2022 走看看