1の#include <cstdioを> 2の#include <キュー> 3。の#include <入出力ストリーム> 4。の#include <ユーティリティ> 5。の#include <アルゴリズム> 6。の#include <ベクトル> 7。 使用した 名前空間STD; 8 。9 INT C [ 10 ]; / / クイーンの各列の一時的な記録位置 10 のconst int型 N- = 8 ; // クイーンの数 。11 12は、 チャー [Pの8 ] [ 8 ]; // ボードがドロップできるかどうかのレコード 13は INTのN = 1 ; 14 15 空隙 ewq(int型 Iは、int型の Xは、int型 Yの)// X-Yの周りでプラスにI 16 { 17 のために(INT J = 0 ; J <N- J ++ ) 18は 、{ 。19 P [X] [J] + = I、 20 P [J] [Y] + = I; 21である IF(X-Y + J> = 0 && N-> X - Y + J) 22は 、{ 23が P [X - Y + J] [J] + = I; 24 } 25 IF(YJ + X> = 0&& N> X + YJ ) 26 { 27 P [X + YJ] [J] + = I。 28 } 29 } 30 P [X] [Y] - = 3 * I。 31 } 32の 33 空隙 PRI()// 打印解 34 { 35 のための(int型私= 0 ; iがn <; Iは++ ) 36 { 37 のための(int型 J = 0 ; J <N; J ++ ) 38 のprintf(" %dの"、((C [I] == J)?1:0 )); 39 のprintf(" \ N- " ); 40 } 41である のprintf(" \ N- " ); 42である } 43が 44である ボイド(pri_1)// 第二種は印刷 45 { 46である のprintf(" 番号D%\ N- "、N ++ ); 47 用(INT I = 0、I <N - 、I ++ ) 48 { 49 のために(INT J =0 ; J <N; J ++ ) 50 のprintf(" %dの"、((C [J] == I)?1:0 )); 51 のprintf(" の\ n " ); 52 } 53 } 54 55 空隙 QWE(INT CUR) 56 { 57 のために(int型 i = 0 ; iがN <、iは++ ) 58 { 59 であれば(P [CUR] [I]!)// 有位置 60 { 61 C [CUR] = I; // マーク位置 62である IF(N-CUR == - 1 ) 63は 、{ 64 pri_1(); 65 続行; 66 } 67 ewq(1、CUR、I); // 名前を書く 68 QWE( + CUR 1。); 69 ewq( - 1、CUR、I); // 名前キャンセル 70 } 71である } 72 } 73である 74 75 INT (メイン) 76 { 77 のmemset(P、0、はsizeof (P))。 78 QWE(0 )。 79 リターン 0 ; 80 }