zoukankan      html  css  js  c++  java
  • [BZOJ3109] [cqoi2013]新数独

    Description

    Input

    输入一共15行,包含一个新数独的实例。第奇数行包含左右方向的符号(<和>),第偶数行包含上下方向的符号(^和v)。
     

    Output

    输出包含9行,每行9个1~9的数字,以单个空格隔开。输入保证解惟一。

    Sample Input

    < > > < > <
    v v ^ ^ v v ^ ^ ^
    < < > < > <
    ^ ^ ^ v ^ ^ ^ v v
    < < < < > >
    > < > > > >
    v ^ ^ ^ ^ v v v ^
    > > > > < >
    v v ^ v ^ v ^ v ^
    > < < > > >
    < < < < > <
    v ^ v v v v ^ ^ v
    < > > < < >
    ^ v v v ^ v ^ v v
    < > < > < >

    Sample Output

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


    无脑爆搜?

    发现奇怪的问题。

    有一个变量没有初始化(主函数中的x), 然后去掉所有的主函数内的register就A了, 加上就re。

    怕是register有一些奇怪的锅??

    求dalao告知。


    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    
    int mp[20][15];
    int da[15][15][15][15], xiao[15][15][15][15];
    
    bool vis1[20][20], vis2[20][20], vis3[20][20];
    //    hang             lie           kuai
    inline int id(int x, int y)
    {
        int tx = (x - 1) / 3 + 1, ty = (y - 1) / 3 + 1;
        return (tx - 1) * 3 + ty;
    }
    
    inline void print()
    {
        for (register int i = 1 ; i <= 9 ; i ++, puts(""))
            for (register int j = 1 ; j <= 9 ; j ++)
                printf("%d ", mp[i][j]);
    }
    
    inline bool right(int x, int y, int z)
    {
        if (y >= 2 and da[x][y][x][y-1] and z < mp[x][y-1]) return 0;
        if (y >= 2 and xiao[x][y][x][y-1] and z > mp[x][y-1]) return 0;
        if (x >= 2 and da[x][y][x-1][y] and z < mp[x-1][y]) return 0;
        if (x >= 2 and xiao[x][y][x-1][y] and z > mp[x-1][y]) return 0;
        return 1;
    }
    
    inline void dfs(int x, int y)
    {
        if (x > 9) {
            print();
            exit(0);
        }
        for (register int i = 1 ; i <= 9 ; i ++)
        {
            if (vis1[x][i] or vis2[y][i] or vis3[id(x, y)][i]) continue;
            if (!right(x, y, i)) continue;
            vis1[x][i] = vis2[y][i] = vis3[id(x, y)][i] = 1;
            mp[x][y] = i;
            if (y == 9) dfs(x + 1, 1);
            else dfs(x, y + 1);
            mp[x][y] = 0;
            vis1[x][i] = vis2[y][i] = vis3[id(x, y)][i] = 0;
        }
    }
    
    int main()
    {
        int x = 0;
        for (register int i = 1 ; i <= 15 ; i ++)
        {
            if (i % 5 == 1 or i % 5 == 3 or i % 5 == 0) {
                x++;
                for (register int j = 1 ; j <= 6 ; j ++)
                {
                    char ch;
                    cin>>ch;
                    while(ch!='>'&&ch!='<') cin>>ch;
                    if (ch == '>') {
                        int y = 3 * ((j + 1) / 2 - 1) + (j + 1) % 2 + 1;
                        da[x][y][x][y+1] = 1;
                        xiao[x][y+1][x][y] = 1;    
                    } else {
                        int y = 3 * ((j + 1) / 2 - 1) + (j + 1) % 2 + 1;
                        xiao[x][y][x][y+1] = 1;
                        da[x][y+1][x][y] = 1;
                    }
                }
            } else {
                x++;
                for (register int j = 1 ; j <= 9 ; j ++)
                {
                    char ch;
                    cin>>ch;
                    while(ch!='^'&&ch!='v') cin>>ch;;
                    if (ch == '^') {
                        da[x][j][x-1][j] = 1;
                        xiao[x-1][j][x][j] = 1;
                    } else {
                        xiao[x][j][x-1][j] = 1;
                        da[x-1][j][x][j] = 1;                    
                    }
                }
                x--;
            }
        }
        dfs(1, 1);
        return 0;
    }
  • 相关阅读:
    struts2 批量上传.
    jsoup html解析器 实现对博客园博文标题链接抓取
    赶鸭子上架的cdq分治
    RE:从零开始的莫比乌斯反演
    我永远无法学会的dp
    gym 101915
    2017-2018 ACM-ICPC Latin American Regional Programming Contest GYM101889
    网络流24T
    re:从零开始的数位dp
    Codeforces Round 504
  • 原文地址:https://www.cnblogs.com/BriMon/p/9571358.html
Copyright © 2011-2022 走看看