羅区P1784数独

トピックポータル

問題解決のアイデア:

8人の女王とスラッシュを記録せずに、この質問を除いて、非常に似ていますが、それぞれのグリッドを記録するために、それぞれの位置に番号を記入しなければなりません。

ACコード:

1の#include <cstdioを>
 2の#include <iostreamの>
 3の#include <cstdlib>
 4  
5  使用 名前空間STD。
6  
7  INT [ 10 ] [ 10 ]。
8  ブール H [ 10 ] [ 10 ]、L [ 10 ] [ 10 ]、G [ 10 ] [ 10 ]。 
9  
10インラインボイドプリント(){
 11      のためにint型 i = 1 ; iが<= 9 ; iは++ ){
 12         INTの J = 1 ; J <= 9 ; J ++ 13              のprintf(" %dの" 、[I] [J])。
14          のprintf(" の\ n " );
15      }
 16      出口(0 );
17  }
 18の 
19インラインボイド DFS(int型のx、int型のY){
 20      であれば([X] [Y]!= 0 ){
 21          場合(Xの== 9 &&のy == 9 22              プリント()。
23          
24              であれば(Y軸== 9 25の                  DFS(X + 11 )。
26の              
27                  DFS(X、Y + 1 )。
28      }
 29      場合([X] [Y] == 0 ){
 30          のためのint型 i = 1 ; iが<= 9 ; I ++ ){
 31              なら!(H [I] [X] && L [I] [Y] &&!G [i]の[(X- 1)/ 3 * 3 +(Y- 1)/ 3 + 1 ]){
 32                  [X] [Y] = I。
33                  時間[I]は、[X] = 1 34                  [I] [Y]は、L = 1 35                  G [i]の[(X- 1)/ 3 * 3 +(Y- 1)/ 3 + 1 ] = 1 36                  場合(Xの== 9 &&のy == 9 37                      プリント()。
38                  であれば(Y軸== 9 39                     DFS(X + 11 )。
40の                 
41                      DFS(X、Y + 1 )。
42                  [X] [Y] = 0 ;
43                  時間[I]は、[X] = 0 44                  [I] [Y]はL = 0 45                  G [i]の[(X- 1)/ 3 * 3 +(Y- 1)/ 3 + 1 ] = 0 ;
46              }
 47          }
 48      }
 49 }
 50  
51  のint main()の
 52  {
 53      のためにint型 i = 1 ; iが<= 9 ; I ++ 54          のためのINT J = 1 ; J <= 9 ; J ++ ){ 
 55              のscanf(" %dの"、&[ I] [J]);
56              時間[I] [J] [I] = 1 [I] [J] [J] = G [I] [J]] [(I- 1)/ 3 * 3 + (J- 1)/ 3 + 1 ] = 1 57          } 
 58の      DFS(11 )。
59      リターン 0 ;
60 }

 

おすすめ

転載: www.cnblogs.com/lipeiyi520/p/11354841.html