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 }