0001 #include "../queen_brute_force_1/queen.h" 0002 0003 /****************************************************************************************** 0004 * n皇后算法(递归版) 0005 * 初始启动:placeQueens(nQueen, 0); 0006 ******************************************************************************************/ 0007 void placeQueens ( int nQueen, int k ) { //放置n个皇后中的第k个(假设0至k-1均已就位) 0008 static int solu[QUEEN_MAX]; //解法 0009 if ( nQueen <= k ) { //若所有皇后都已就位,则 0010 nSolu++; displaySolution ( solu, nQueen ); //输出可行解 0011 } else //否则 0012 for ( int i = 0; i < nQueen; i++ ) { //依次 0013 solu[k] = i; //试着将当前皇后放在(当前行的)各列上 0014 if ( !collide ( solu, k ) ) //若没有冲突,则 0015 placeQueens ( nQueen, k + 1 ); //进而考虑下一皇后 0016 } //思考:这里的回溯,通过什么机制实现? 0017 }