1054.数独 SDNUOJ 1054

Description
syc最近迷上了数独这个游戏,他在完成一个数独后总要费一些时间来检查。于是他把lg作为苦力拽来帮他检查。由于lg是搞基的,所以他就想写个程序来判断syc完成的数独是否正确。不过最近他在感情上遇到了一些问题没有功夫去写,就想请你帮他完成这个任务。
数独规则:拼图是九宫格(即3格宽×3格高)的正方形状,每一格又细分为一个九宫格。在每一个小九宫格中,分别填上1至9的数字,让整个大九宫格每一列、每一行的数字都不重复。
Input
一个9*9个矩阵
每个为1到9的数字
Output
一个数字,1为构成数独,0为不构成数独
Sample Input
3 8 7 9 6 2 5 1 4
5 1 9 4 3 8 7 6 2
6 2 4 1 5 7 3 9 8
8 7 6 3 1 9 2 4 5
2 9 1 5 8 4 6 7 3
4 3 5 2 7 6 1 8 9
7 5 8 6 4 3 9 2 1
9 4 3 7 2 1 8 5 6
1 6 2 8 9 5 4 3 7
Sample Output
1

把题解写成这样我也很无奈,我实在不会了,有简单的代码麻烦您告诉我一下,我出两块钱。以此博客为证。

#include <cstdio>
#include <iostream>
using namespace std;

int a[15][15];
int b[100];

bool check(int a, int b, int c, int d, int e, int f, int g, int h, int m)
{
    if(a == 0 || b == 0 || c == 0 || d == 0 || e == 0 || f == 0 || g == 0 || h == 0 || m == 0)
        return 0;
    if(a == b || a == c || a == d || a == e || a == f || a == g || a == h || a == m )
        return 0;
    if(b == c || b == d || b == e || b == f || b == g || b == h || b == m )
        return 0;
    if(c == d || c == e || c == f || c == g || c == h || c == m )
        return 0;
    if(d == e || d == f || d == g || d == h || d == m )
        return 0;
    if(e == f || e == g || e == h || e == m )
        return 0;
    if(f == g || f == h || f == m )
        return 0;
    if(g == h || g == m || h == m )
        return 0;
    switch(a / 10)
    {
    case 0:
        return 1;
    default :
        return 0;
    }
}


int main()
{
    int tot = 1;
    for(int i = 1; i <= 9; ++i)
        for(int j = 1; j <= 9; ++j)
        {
            scanf("%d", &a[i][j]);
            b[tot++] = a[i][j];
        }
    bool flag;
    for(int i = 1; i <= 9; ++i)
    {
        flag = check(a[i][1], a[i][2], a[i][3], a[i][4], a[i][5], a[i][6], a[i][7], a[i][8], a[i][9]);
        if(!flag)
        {
            cout << '0' << '\n';
            return 0;
        }
    }
    for(int j = 1; j <= 9; ++j)
    {
        flag = check(a[1][j], a[2][j], a[3][j], a[4][j], a[5][j], a[6][j], a[7][j], a[8][j], a[9][j]);
        if(!flag)
        {
            cout << '0' << '\n';
            return 0;
        }
    }
    int t = 9;
    while(t--)
    {
        int c = 1;
        flag = check(b[c], b[c + 1], b[c + 2], b[c + 9], b[c + 10], b[c + 11], b[c + 18], b[c + 19], b[c + 20]);
        if(!flag)
        {
            cout << '0' << '\n';
            return 0;
        }
        c += 3;
    }
    cout << '1' << '\n';
    return 0;
}

全部评论

相关推荐

首先讲三个故事,关于牛客的事件一:2024年,牛客上有一对高学历情侣,求职方向与我当时一致,都是嵌入式方向。他们恰好是我的朋友,专业能力和学历背景都很扎实,也因此拿到了不少优质offer。和很多求职者一样,他们把offer情况整理后发在平台上,本意是记录与交流,但很快引发了争议。有声音指责他们“集邮”“不释放名额”,认为这种展示本身就是一种炫耀。最终讨论失控,当事人删除内容,事件也很快被遗忘。事件二:小红书评论区,一条评价获得了不少共鸣:“感觉牛客就是当年那群做题区毕业了开始找工作还收不住那股味,颇有一种从年级第一掉到年纪第二后抱怨考不上大学的味道”,这条评论被水印里这个同学转发到牛客后,评论...
小型域名服务器:当看到别人比自己强的时候,即便这是对方应得的,很多人会也下意识的歪曲解构对方的意图,来消解自己在这本就不存在的比较中输掉的自信,从而平白制造出很多无谓的争论。比如你会在空余时间来写优质好文,而我回家只会暗区突围,那么我就可以作为键盘侠在这里评论你是不是XXXXXXXX。即便我自己都知道这是假的,但只要这没那么容易证伪,那么当你开始回应的时候,脏水就已经泼出去了,后面可能会有更多的人带着情绪来给我点赞,而毫不关注你写的文章内容本身是啥了。
SAGIMA牛马咖啡
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务