0001 #include "queen_stack.h" 0002 0003 #define QUEEN_MAX 20 //皇后最大数量 0004 0005 /****************************************************************************************** 0006 * 全局变量 0007 ******************************************************************************************/ 0008 RunMode runMode; //演示模式 0009 int nSolu = 0; //解的总数 0010 int nCheck = 0; //尝试的总次数 0011 0012 /****************************************************************************************** 0013 * n皇后(迭代版) 0014 ******************************************************************************************/ 0015 int main ( int argc, char* argv[] ) { 0016 for ( int i = 1; i < argc - 1; i++ ) //检查参数 0017 if ( !strcmp ( "-step", argv[i] ) ) runMode = Step; //设定为单步演示模式 0018 Rank nQueen = atoi ( argv[argc-1] ); //棋盘大小 = 皇后总数 0019 if ( QUEEN_MAX < nQueen || 1 > nQueen ) { //检查参数 0020 fprintf ( stderr, "\nUsage: %s [-step] <nQueen(%d)>\n", argv[0], QUEEN_MAX ); 0021 return -1; 0022 } 0023 placeQueens ( nQueen ); //启动查找 0024 cout << nSolu << " solution(s) found after " 0025 << nCheck << " check(s) for " 0026 << nQueen << " queen(s)\n"; //输出解的总数 0027 return 0; 0028 }