• POJ 2676


      1 #include <stdio.h>
      2 #include <iostream>
      3 #include <string>
      4 #define MAXN 9
      5 using namespace std;
      6 
      7 bool mark_o[MAXN][MAXN];
      8 bool mark[MAXN+1][MAXN+1];
      9 bool mark_j[MAXN+1][MAXN+1];
     10 bool mark_3_3[MAXN+1][MAXN+1];
     11 int _m[MAXN][MAXN];
     12 bool boo;
     13 void dfs(int i,int j);
     14 int get_place(int i,int j);
     15 int main()
     16 {
     17    // freopen("acm.acm","r",stdin);
     18    // freopen("out.acm","w",stdout);
     19     //int r;
     20     //int c;
     21     int i;
     22     int j;
     23     int tem;
     24     int test;
     25     string s;
     26     cin>>test;
     27     while(test --)
     28     {
     29         memset(mark_o,false,sizeof(mark_o));
     30         memset(mark,false,sizeof(mark));
     31         memset(mark_j,false,sizeof(mark_j));
     32         memset(mark_3_3,false,sizeof(mark_3_3));
     33         for(i = 0; i < MAXN; ++ i)
     34         {
     35             cin>>s;
     36             for(j = 0; j < MAXN; ++ j)
     37             {
     38                 _m[i][j] = s[j] - '0';
     39                 if( (tem = s[j]-'0') != 0)
     40                 {
     41                     mark_o[i][j] = true;
     42                     mark_j[j][s[j] - '0'] = true;
     43                     mark[i][s[j] - '0'] = true;
     44                     mark_3_3[get_place(i,j)][tem] = true;
     45                 }
     46             }
     47         }
     48         boo = false;
     49         for(i = 0; i < MAXN; ++ i)
     50         {
     51               if(!mark_o[0][i])
     52               {
     53                       break;
     54               }
     55         }
     56         dfs(0,i);
     57         
     58     }
     59     return 0;
     60 }
     61 
     62 
     63 void dfs(int i,int j)
     64 {
     65     if(i == 9)
     66     {
     67         int m;
     68         int n;
     69         for(m = 0; m < 9; ++ m)
     70         {
     71             for(n = 0; n < 9; ++ n)
     72             {
     73                 cout<<_m[m][n];
     74             }
     75             cout<<endl;
     76         }
     77         boo = true;
     78         return;
     79     }
     80     if(j == 9)
     81     {
     82             int _i;
     83             for( _i = 0; _i < 9; ++ _i)
     84             {
     85                 if(!mark_o[i+1][_i])
     86                 {
     87                     break;
     88                 }
     89             }
     90             dfs(i+1,_i);
     91             if(boo)
     92             {
     93                 return;
     94             }
     95     }
     96     for(int k = 1;  k < 10; ++ k)
     97     {
     98         int place = get_place(i,j);
     99         if(!mark_j[j][k] && !mark[i][k] && !mark_o[i][j] && !mark_3_3[place][k] )
    100         {
    101             _m[i][j] = k;
    102             mark[i][k] = true;
    103             mark_j[j][k] = true;
    104             mark_o[i][j] = true;
    105             mark_3_3[place][k] = true;
    106             int _j;
    107             for(_j = j; _j < 9; ++ _j)
    108             {
    109                 if(!mark_o[i][_j])
    110                 {
    111                     break;
    112                 }
    113             }
    114             dfs(i,_j);
    115             mark_3_3[place][k] = false;
    116             mark_o[i][j] = false;
    117             mark[i][k] = false;
    118             mark_j[j][k] = false;
    119         
    120             if(boo)
    121                 return;
    122         }
    123     }
    124 }
    125 
    126 int get_place(int i,int j)
    127 {
    128     if(i >= 0 && i <= 2)
    129     {
    130         if(j >= 0 && j <= 2)
    131         {
    132             return 0;
    133         }
    134         else if(j >= 3 && j <= 5)
    135         {
    136             return 1;
    137         }
    138         else
    139         {
    140             return 2;
    141         }
    142     }
    143     else if(i >= 3 && i <= 5)
    144     {
    145         if(j >= 0 && j <= 2)
    146         {
    147             return 3;
    148         }
    149         else if(j >= 3 && j <= 5)
    150         {
    151             return 4;
    152         }
    153         else
    154         {
    155             return 5;
    156         }
    157     }
    158     else if(i >= 6 && i <= 8)
    159     {
    160         if(j >= 0 && j <= 2)
    161         {
    162             return 6;
    163         }
    164         else if(j >= 3 && j <= 5)
    165         {
    166             return 7;
    167         }
    168         else 
    169         {
    170             return 8;
    171         }
    172     }
    173 }
  • 相关阅读:
    html5 自定义属性data-*
    企业微信接口授权
    js对象---字符串
    谈谈html5新增的元素及其他功能
    模拟缓存
    jdbc数据库连接
    面向对象的理解
    最简单的Spring+SpringMVC+Mybatis的整合
    EF报错 附加类型model失败
    c# Web服务远程“调用”调试
  • 原文地址:https://www.cnblogs.com/gavinsp/p/4568636.html
Copyright © 2020-2023  润新知