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

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3109

    搜索一遍。读入注意一下。。

    #include<cstring>
    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cmath>
    #define rep(i,l,r) for (int i=l;i<=r;i++)
    #define down(i,l,r) for (int i=l;i>=r;i--)
    #define clr(x,y) memset(x,y,sizeof(x))
    #define maxn 1000500
    using namespace std;
    bool bx[10][10],by[10][10],bz[10][10][10];
    int mpd[100][100],mpr[100][100],mp[100][100],chx[10],chy[10];
    int cnt1,cnt2,flag;
    char ch;
    int read(){
        int x=0,f=1; char ch=getchar();
        while (!isdigit(ch)) {if (ch=='-') f=-1; ch=getchar();}
        while (isdigit(ch)) {x=x*10+ch-'0'; ch=getchar();}
        return x*f;
    }
    bool jud(int x,int y,int val){
        if (bx[x][val]||by[y][val]||bz[(x-1)/3][(y-1)/3][val]) return 0;
        if (mpr[x][y-1]!=0) {
            if (mpr[x][y-1]==1&&mp[x][y-1]<val) return 0;
            if (mpr[x][y-1]==-1&&mp[x][y-1]>val) return 0;  
        } 
        if (mpd[x-1][y]!=0){
            if (mpd[x-1][y]==1&&mp[x-1][y]<val) return 0;
            if (mpd[x-1][y]==-1&&mp[x-1][y]>val) return 0;
        }
        return 1;
    }
    void print(){
        rep(i,1,9) {
            rep(j,1,8) printf("%d ",mp[i][j]); printf("%d
    ",mp[i][9]);
        }
    }
    void dfs(int x,int y){
        if (x==10) {flag=1; print(); return;}
        if (flag) return;
        rep(i,1,9) if (jud(x,y,i)) {
            bx[x][i]=1; by[y][i]=1; bz[(x-1)/3][(y-1)/3][i]=1;
            mp[x][y]=i;
            if (y==9) dfs(x+1,1); else dfs(x,y+1);
            bx[x][i]=0; by[y][i]=0; bz[(x-1)/3][(y-1)/3][i]=0;
        }
    }
    int main(){
      //freopen("in.txt","r",stdin);
        rep(t,0,2){
            cnt1=cnt2=0;
            rep(i,1,5){
                if (i&1){
                    cnt1++;
                    rep(j,1,6) {
                        ch=getchar(); 
                        while (ch!='<'&&ch!='>') ch=getchar(); 
                        if (ch=='<') chx[j]=-1; else chx[j]=1;
                    }
                //  rep(j,1,6) printf("%d ",chx[j]); puts("");
                    rep(j,0,2) 
                        rep(k,1,2) 
                            mpr[cnt1+t*3][k+j*3]=chx[j*2+k];//,printf("%d %d %d
    ",cnt1+t*3,k+j*3,mpr[cnt1+t*3][k+j*3]);    
                }
                else {
                    cnt2++;
                    rep(j,1,9) {
                        ch=getchar();
                        while (ch!='v'&&ch!='^') ch=getchar();
                        if (ch=='v') chy[j]=1; else chy[j]=-1;
                    }
                    rep(j,0,2) rep(k,1,3) mpd[cnt2+t*3][k+j*3]=chy[j*3+k];//,printf("%d %d %d
    ",cnt2+t*3,k+j*3,mpd[cnt2+t*3][k+j*3]);
                }
            }
        }
        dfs(1,1);
        return 0;
    }
  • 相关阅读:
    ubuntu 下 apt-get update 错误
    'unable to run mksdcard sdk tool" when instll android studio on ubuntu14.10以后版本
    ubuntu下安装sougou
    ubuntu下安装jdk1.8.0_91
    ubuntu update时出现错误
    android studio中R文件变红并报错
    git使用
    Android新手须知
    css初级之框模型
    css初级之边框
  • 原文地址:https://www.cnblogs.com/ctlchild/p/5143957.html
Copyright © 2011-2022 走看看