题解

205 条题解

  • 0
    @ 2007-07-31 09:33:28

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

  • 0
    @ 2007-08-01 10:34:53

    本人面对此水题N次性AC,太惭愧了。

    我的正确率啊!~~~~~~~~~~~~~~~~~

  • 0
    @ 2007-07-30 19:59:56

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案错误... ├ 标准行输出

     ├ 错误行输出

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案错误... ├ 标准行输出

     ├ 错误行输出

    ├ 测试数据 10:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Unaccepted 有效得分:80 有效耗时:0ms

    楼下有个兄弟 咱么一样倒霉嘿

  • 0
    @ 2007-07-30 15:34:26

    这道题真是超烦脱俗!!!

  • 0
    @ 2007-07-30 13:22:42

    我们学校的模拟赛的题目,呵呵

  • 0
    @ 2007-07-30 11:20:53

    第39个,本来可以更早的,但是PUPPY貌似把我的程序给判丢了,提交了20分钟还running......

  • 0
    @ 2007-07-30 11:00:34

    第一个数据 过不到

  • 0
    @ 2007-07-30 00:11:25

    的确是水题

  • 0
    @ 2007-07-29 22:34:18

    我也是布尔数组~因为正确的话~

    每个数都只出现9次~

    如果出现的不足9次或超出9次就直接输出FALSE拉!

  • 0
    @ 2007-07-29 22:28:41

    水题

    坚定完毕

  • 0
    @ 2007-07-29 21:35:32

    关键是3*3的格子中的判断

  • 0
    @ 2007-07-29 21:09:49

    直接模拟吗?

  • 0
    @ 2007-07-29 20:00:06

    第三叫地板啊

  • 0
    @ 2007-07-29 19:59:44

    题目很简单 但是要细心

    注意! 每个数独之间 有一排空的 要读一个回车!

    我用的布尔数组...

    ---|---|---|---|---|---|

    愿C语言能携手P共同发展壮大!各位学C的顶啊!!

    NOIP 2007 is coming!

    湖北宜昌一中203班 SixplusSeVen

    QQ:383025560

    blog.sina.com/NoipCenter

  • -1
    @ 2019-08-02 10:14:11

    python
    一、思路:
    创建函数五个,分别是:
    in_put_lists: 输入一个数组(二维列表)
    x_to_y: 将横向数组(二维列表) 按 纵向 存储
    lists_to_square:将横向数组(二维列表) 按 品字格 存储
    judge_list: 判断一维列表是否含 1-9 所以元素
    judge_lists: 循环调用judje_list,判断二维列表是否合乎要求
    二、犯下什么错误
    unhashable: set(list(list)) set内list的各元素为列表或字典时,不可哈希

    def in_put_lists():
        num_x_rt = []
        for i in range(0, 9):
            num_x_rt.append(input().split())
        return num_x_rt
    
    
    def x_to_y(lists_x):
        list_y_rt = []
        for i in range(0, 9):
            y_temp = []
            for j in range(0, 9):
                y_temp.append(lists_x[j][i])
            list_y_rt.append(y_temp)
        return list_y_rt
    
    
    def lists_to_square(lists_x):
        list_squ_rt = []
        squ_first = [0,3,6]
        for i in squ_first:
            for j in squ_first:
                squ_temp = []
                squ_temp.append(lists_x[i][j])
                squ_temp.append(lists_x[i][j+1])
                squ_temp.append(lists_x[i][j+2])
                squ_temp.append(lists_x[i+1][j])
                squ_temp.append(lists_x[i+1][j+1])
                squ_temp.append(lists_x[i+1][j+2])
                squ_temp.append(lists_x[i+2][j])
                squ_temp.append(lists_x[i+2][j+1])
                squ_temp.append(lists_x[i+2][j+2])
                list_squ_rt.append(squ_temp)
        return list_squ_rt
    
    
    def judge_list(list_x):
        if len(set(list_x)) == 9:
            return True
        else:
            return False
    
    
    def judge_lists(lists_x):
        lists_y = x_to_y(lists_x)
        lists_squ = lists_to_square(lists_x)
        flag = True
        for i in range(0, 9):
            if not judge_list(lists_x[i]):
                flag = False
                break
            if not judge_list(lists_y[i]):
                flag = False
                break
            if not judge_list(lists_squ[i]):
                flag = False
                break
        return flag
    
    
    n = int(input())
    
    for g_i in range(0, n):
        lists_input = in_put_lists()
        if g_i != n-1:
            input()
        if judge_lists(lists_input):
            print('Right')
        else:
            print('Wrong')
    
    
  • -1
    @ 2019-02-11 21:20:14
    #include <map>
    #include <set>
    #include <list>
    #include <cmath>
    #include <ctime>
    #include <deque>
    #include <queue>
    #include <stack>
    #include <cctype>
    #include <cstdio>
    #include <string>
    #include <vector>
    #include <cassert>
    #include <climits>
    #include <cstdlib>
    #include <cstring>
    #include <iomanip>
    #include <utility>
    #include <iostream>
    #include <algorithm>
    #define mkp make_pair
    #define fi first
    #define se second
    using namespace std;
    typedef long long ll;
    typedef vector<int> veci;
    typedef set<int> seti;
    typedef size_t szt;
    bool check(veci v) {
        szt s = v.size();
        seti st;
        for (auto i: v) {
            st.insert(i);
        }
        szt s1 = st.size();
        if (s1 == s) {
            return true;
        }
        return false;
    }
    int main() {
        int T;
        cin >> T;
        while (T--) {
            int mp[10][10] = {};
            for (int i = 0; i < 9; i++) {
                for (int j = 0; j < 9; j++) {
                    cin >> mp[i][j];
                }
            }
            bool mk = 1;
            for (int i = 0; i < 9 && mk; i++) {
                vector<int> v(mp[i], mp[i] + 9);
                mk &= check(v);
            }
            for (int j = 0; j < 9 && mk; j++) {
                vector<int> v;
                for (int i = 0; i < 9; i++) {
                    v.push_back(mp[i][j]);
                }
                mk &= check(v);
            }
            for (int i = 0; i < 3 && mk; i++) {
                for (int j = 0; j < 3 && mk; j++) {
                    vector<int> v;
                    for (int k = 0; k < 3; k++) {
                        for (int l = 0; l < 3; l++) {
                            v.push_back(mp[i * 3 + k][j * 3 + l]);
                        }
                    }
                    mk &= check(v);
                }
            }
            if (mk) {
                cout << "Right" << endl;
            } else {
                cout << "Wrong" << endl;
            }
        }
        return 0;
    }
    
    
  • -1
    @ 2017-07-06 15:35:20
    #include<iostream>
    using namespace std;
    
    bool test(int a[]) {
        bool flag[10] = {false};
        //for(int i = 0; i<9;i++)cout << a[i];cout << endl;
        for(int i = 0; i < 9; i++) {
            if(flag[a[i]]) {
                return false;
            }
            flag[a[i]] = true;
        }
        return true;
    }
    
    void solve() {
        int sudoko[9][9];
        for(int i = 0; i < 9; i++) {
            for(int j = 0; j < 9; j++) {
                cin >> sudoko[i][j];
            }
        }
    
        for(int i = 0; i < 9; i++) {
            //cout << i << endl;
            if(!test(sudoko[i])) {
                cout << "Wrong" << endl;
                return;
            }
        }
        for(int i = 0; i < 9; i++) {
            int a[9];
            for(int j = 0; j < 9; j++){
                a[j] = sudoko[j][i];
            }
            if(!test(a)) {
                cout << "Wrong" << endl;
                return;
            }
        }
        for(int i = 0; i < 9; i += 3) {
            for(int j = 0; j < 9; j += 3) {
                int a[9];
                int n = 0;
                for(int b = 0;b< 3; b++) {
                    for(int c = 0; c < 3; c++) {
                        a[n++] = sudoko[i+b][j+c];
                    }
                }
                if(!test(a)) {
                    cout << "Wrong" << endl;
                    return;
                }
            }
        }
        cout << "Right" << endl;
    }
    
    int main() {
        int k;
        cin >> k;
        while(k--) {
            solve();
        }
        return 0;
    }
    
  • -1
    @ 2017-04-01 13:35:54

    #include <stdio.h>
    int judge(int num[9][9])
    {
    int i,j,k,t;
    int row[10];
    int column[10];
    int cube[10];
    for(i=1;i<=9;i++)
    {
    row[i]=0;
    column[i]=0;
    cube[i]=0;
    }
    for(i=0;i<=8;i++)
    {

    for(j=0;j<=8;j++) row[num[i][j]]++;
    for(j=1;j<=9;j++) if (row[j]!=1) return 0;
    for(j=1;j<=9;j++) row[j]=0;
    }
    for(i=0;i<=8;i++)
    {

    for(j=0;j<=8;j++) column[num[j][i]]++;
    for(j=1;j<=9;j++) if (column[j]!=1) return 0;
    for(j=1;j<=9;j++) column[j]=0;
    }
    for(i=0;i<=8;i=i+3)
    for(j=0;j<=8;j=j+3)
    {
    for(k=0;k<=2;k++)
    for(t=0;t<=2;t++) cube[num[i+k][j+t]]++;
    for(j=1;j<=9;j++) if (cube[j]!=1) return 0;
    for(j=1;j<=9;j++) cube[j]=0;
    }
    return 1;
    }
    int main()
    {
    int n,i,j,k;
    int num[9][9];
    scanf("%d",&n);
    for(k=1;k<=n;k++)
    {
    for(i=0;i<=8;i++)
    for(j=0;j<=8;j++)
    scanf("%d",&num[i][j]);
    if (judge(num)==1) printf("Right\n"); else printf("Wrong\n");
    }

    return 0;
    }
    纯模拟,注意换行和C的数组名做函数参数时的定义和调用

  • -1
    @ 2017-03-17 00:38:18
    #include <iostream>
    using namespace std;
    int bl=1;
    
    int line(int sdk[9][9])
    {
        for (int i=0;i<9;i++) {
            int num[10]={0};
            for (int j = 0; j < 9; j++) {
                num[sdk[i][j]]++;
            }
            for (int k=1;k<=9;k++)
                if (num[k]!=1) bl=0;
        }
    }
    
    int row(int sdk[9][9])
    {
        for (int i=0;i<9;i++) {
            int num[10]={0};
            for (int j = 0; j < 9; j++) {
                num[sdk[j][i]]++;
            }
            for (int k=1;k<=9;k++)
                if (num[k]!=1) bl=0;
        }
    }
    
    int combine(int sdk[9][9])
    {
        int num[10]={0};
        for (int i=0;i<3;i++)
            for (int j=0;j<3;j++)
            {
                for (int k=0;k<10;k++) num[k]=0;
                for (int k=0+i*3;k<3+i*3;k++)
                    for (int l = 0 + j * 3; l < 3 + j * 3; l++) {
                        num[sdk[k][l]]++;
                    }
                for (int p=1;p<=9;p++) if (num[p]!=1) bl=0;
            }
    }
    
    
    
    
    int main() {
        int i,j,k,m,n,l;
        int sdk[9][9];
        cin >> n;
        for (l=0;l<n;l++)
        {
            for (i=0;i<9;i++)
                for (j=0;j<9;j++)
                {
                    cin >> sdk[i][j];
                }
            bl=1;
            line(sdk);
            row(sdk);
            combine(sdk);
            if (bl==1) cout << "Right" << endl;
            else cout << "Wrong" << endl;
        }
    }
    
  • -1
    @ 2017-01-25 09:45:47

    var
    n,i,j,k,l,max,s:longint;
    b:array[1..9,1..9]of integer;
    a:array[1..9]of integer;
    f:boolean;
    begin
    readln(n);
    for max:=1 to n do begin
    for i:=1 to 9 do begin
    for j:=1 to 9 do read(b[i,j]);
    readln;
    end;
    readln;
    f:=true;
    for i:=1 to 9 do begin
    for j:=1 to 9 do a[j]:=0;s:=0;
    for j:=1 to 9 do a[b[i,j]]:=1;
    for j:=1 to 9 do s:=s+a[j];
    if s<>9 then f:=false;
    end;
    for i:=1 to 9 do begin
    for j:=1 to 9 do a[j]:=0;s:=0;
    for j:=1 to 9 do a[b[j,i]]:=1;
    for j:=1 to 9 do s:=s+a[j];
    if s<>9 then f:=false;
    end;
    for i:=1 to 3 do
    for j:=1 to 3 do
    for k:=1 to 9 do a[k]:=0;s:=0;
    for k:=(i*3-2)to(i*3)do begin
    for l:=(j*3-2)to(j*3)do a[b[k,l]]:=1;
    end;
    for k:=1 to 9 do s:=s+a[k];
    if s<>9 then f:=false;
    if f=true then writeln('Right')else writeln('Wrong');
    end;
    end.

信息

ID
1335
难度
4
分类
模拟 点击显示
标签
递交数
5130
已通过
1978
通过率
39%
被复制
20
上传者