バックトラック八のクイーンズ

1つの#include <iostreamの>
 2  使用して 名前空間STDを、
3  
4  INT ANS = 0 5  のconst  int型 N = 4 6  INT [N] [N] = { 0 }。
7  
8  ボイドショー(){
 9      COUT << " 答え:" << ANS << ENDL。
10      のためには、int型 i = 0 ; iがNを<; iは++ ){
 11          のためのint型 J = 0 ; J <N; J ++ ){
12              COUT << [I] [J] << '  ' 13          }
 14          COUT << ENDL。
15      }
 16      COUT << ENDL。
17  }
 18  
19  ブールチェック(int型の列、int型COL){
 20      INT I、J。
21      もし(!の行)が返す 22      のための(I =行優先1 ; iが> = 0 ; I - ){ // 检查列
23          場合([i]は[COL])を返す ;
24      }
 25      (i =行優先1、J = col- 1 ; I> = 0 && J> = 0 ; I - 、J - ){ // 检查左上
26          であれば([I] [J])返す ;
27      }
 28      (i =行優先1、J = COL + 1 ; I> = 0 && J <= N- 1、I - 、J ++){ // 检查右上
29          であれば([I] [J])リターン ;
30      }
 31      リターン 32 }
 33  
34  空隙 FUNC(INTの行){
 35      のためのint型 J = 0 ; J <N; J ++ ){
 36          [行] [J] = 1 37          もし{((行、j)をチェック)
 38              であれば(行== N- 1 ){
 39の                  ++ ANS;ショー()。
40              } {
 41                  FUNC(行+ 1 )。
42              }
 43          }
 44          [行] [j] = 0 ;
45      }
 46  }
 47  INT メイン(){
 48      FUNC(0 )。
49      リターン 0 ;
50 }

 

おすすめ

転載: www.cnblogs.com/CodingLife-190505/p/11111260.html