码迷,mamicode.com
首页 > 其他好文 > 详细

bzoj 3109: [cqoi2013]新数独

时间:2016-03-22 23:20:16      阅读:407      评论:0      收藏:0      [点我收藏+]

标签:

 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("\n");
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 }

一个非常恶心的搜索。

bzoj 3109: [cqoi2013]新数独

标签:

原文地址:http://www.cnblogs.com/xydddd/p/5309021.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!