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

     1 #include<cstdio>
     2 #include<iostream> 
     3 using namespace std;
     4 int ha[10][10],li[10][10],xi[10][10],a[10][10],bh[10][10],bl[10][10],kg;
     5 char ch[5];
     6 bool pan(int x,int y,int i)
     7 {
     8     if(ha[x][i]||li[y][i]||xi[(x-1)/3*3+(y-1)/3][i])
     9       return 0;
    10     if((y-1)%3!=0&&(bh[x][y]^(i>a[x][y-1])))
    11       return 0;
    12     if((x-1)%3!=0&&(bl[x][y]^(i>a[x-1][y])))
    13       return 0;
    14     return 1;  
    15 }
    16 void dfs(int x,int y)
    17 {
    18     //if(a[1][1]==4&&a[1][2]==9&&a[1][3]==1&&a[1][4]==7&&a[1][5]==3&&a[1][6]==6&&a[1][7]==5&&a[1][8]==2)
    19       //{
    20         //printf(" ");
    21       //}
    22     if(kg)
    23       return;
    24     if(y==10)
    25       {
    26         x++;
    27         y=1;
    28       }
    29     if(x==10)
    30       {
    31         kg=1;
    32         for(int i=1;i<=9;i++)
    33           {
    34             for(int j=1;j<=9;j++)
    35               {
    36                  printf("%d",a[i][j]);
    37                  if(j!=9)
    38                    printf(" ");
    39               }
    40             printf("
    ");
    41             }
    42         return;
    43       }
    44     for(int i=1;i<=9;i++)
    45       if(pan(x,y,i))
    46         {
    47             a[x][y]=i;
    48             ha[x][i]=1;
    49             li[y][i]=1;
    50             xi[(x-1)/3*3+(y-1)/3][i]=1;
    51             dfs(x,y+1);
    52             ha[x][i]=0;
    53             li[y][i]=0;
    54             xi[(x-1)/3*3+(y-1)/3][i]=0;
    55         }
    56 }
    57 int main()
    58 {
    59     for(int i=1;i<=9;i++)
    60       {
    61         for(int j=1;j<9;j++)
    62           if(j%3)
    63             {
    64               scanf("%s",ch);
    65               if(ch[0]=='<')
    66                 bh[i][j+1]=1;
    67               else
    68                 bh[i][j+1]=0;
    69             }
    70         if(i%3)
    71           for(int j=1;j<=9;j++)
    72             {
    73                 scanf("%s",ch);
    74                 if(ch[0]=='^')
    75                   bl[i+1][j]=1;
    76                 else
    77                   bl[i+1][j]=0;
    78             }
    79       }
    80     dfs(1,1);
    81     return 0;
    82 }

    一个非常恶心的搜索。

  • 相关阅读:
    Android Widget桌面组件创建
    Android 音乐播放器。
    android 创建实时文件夹
    Android 中访问网页 webView
    Android 添加快捷方式
    Android闹钟设置
    Android中webView与javascript交互
    Android 通信的桥梁 Intent
    Android 中Notification和NotificationManager的使用
    Android中播放视频
  • 原文地址:https://www.cnblogs.com/xydddd/p/5309021.html
Copyright © 2011-2022 走看看