zoukankan      html  css  js  c++  java
  • 洛谷 P1784 数独

    题目传送门

    解题思路:

    跟八皇后很相似,区别在于本题不用记录斜线,但是要记录每个宫格,在每个位置上都要填数.

    AC代码:

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<cstdlib>
     4 
     5 using namespace std;
     6 
     7 int a[10][10];
     8 bool h[10][10],l[10][10],g[10][10]; 
     9 
    10 inline void print() {
    11     for(int i = 1;i <= 9; i++) {
    12         for(int j = 1;j <= 9; j++)
    13             printf("%d ",a[i][j]);
    14         printf("
    ");
    15     }
    16     exit(0);
    17 }
    18 
    19 inline void dfs(int x,int y) {
    20     if(a[x][y] != 0) {
    21         if(x == 9 && y == 9)
    22             print();
    23         else
    24             if(y == 9) 
    25                 dfs(x + 1,1);
    26             else 
    27                 dfs(x,y + 1);
    28     }
    29     if(a[x][y] == 0) {
    30         for(int i = 1;i <= 9; i++) {
    31             if(!h[i][x] && !l[i][y] && !g[i][(x-1)/3*3+(y-1)/3+1]) {
    32                 a[x][y] = i;
    33                 h[i][x] = 1;
    34                 l[i][y] = 1;
    35                 g[i][(x-1)/3*3+(y-1)/3+1] = 1;
    36                 if(x == 9 && y == 9)
    37                     print();
    38                 if(y == 9)
    39                     dfs(x + 1,1);
    40                 else
    41                     dfs(x,y + 1);
    42                 a[x][y] = 0;
    43                 h[i][x] = 0;
    44                 l[i][y] = 0;
    45                 g[i][(x-1)/3*3+(y-1)/3+1] = 0;
    46             }
    47         }
    48     }
    49 }
    50 
    51 int main()
    52 {
    53     for(int i = 1;i <= 9; i++)
    54         for(int j = 1;j <= 9; j++){ 
    55             scanf("%d",&a[i][j]);
    56             h[a[i][j]][i] = l[a[i][j]][j] = g[a[i][j]][(i-1)/3*3+(j-1)/3+1] = 1;
    57         } 
    58     dfs(1,1);
    59     return 0;
    60 }
  • 相关阅读:
    1037. 在霍格沃茨找零钱(20)
    1036. 跟奥巴马一起编程(15)
    Java基础(五)面对对象
    Java基础(四)方法和数组
    Java基础(三)选择和循环结构
    Java基础(一)
    工厂模式(Factory Pattern)
    git 基本操作
    CXF生成客户端遇到的问题
    简单的CRUD(二)
  • 原文地址:https://www.cnblogs.com/lipeiyi520/p/11354841.html
Copyright © 2011-2022 走看看