N皇后的规则:任意两个皇后不在同一行,不在同一列,不在同一斜线上。 算法分析:这种问题就用回溯法。深度搜索然后回溯。用一个数组记录每一行皇后的位置,下标代表行,值代表列。对行深度搜索。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 ...
/// 放皇后 /// /// 皇后列表 /// 当前皇后索引 private void PutQueens(List<int> queens, int current) { int n = queens.Count; for (queens[current] = 1; queens[current] <= n;queens[current]++ ) { if (IsMatch(queens, current)) { //当前位置满足情况,不会被攻击,换下一个皇后进...
int QueenPuzzle::IsValidate(int _n) { for(int i = 0; i < _n; i++) { if(this->queen[i] == this->queen[_n]) return 0;if(abs(this->queen[i] - this->queen[_n]) == (_n - i)) return 0; }return 1; }int main()...
int sum; // 解法种类数 int Queen[20]; // 各皇后所在行号 3.2 N皇后问题主函数(void NQueen(int iQueen)) 将sum置0,并且开始搜寻问题的解决方案。 3.3 放置皇后到棋盘上(void place(int row, int iQueen)) 首先进行判断,如果此时的行数row已经大于iQueen皇后个数,则已经找到一种解法,直接展示该解法。
计算12皇后所用时间: $ time echo 12 | python nqueen-binary.py 14200 real 0m0.552s user 0m0.540s sys 0m0.008s 考虑问题的对称性 将8皇后其中一个解垂直翻转后,可以得到一个新的解,如图: 故,可以只计算一半,从而加快时间。 将nqueen-binary.py优化后,代码如下: #filename nqueen-binary-flip.py ...
n后问题的递归的回溯算法,,设已经存在全局变量n代表皇后个数。void Queen::Backtrack(int t){ if ( (1) ) sum++; 1361833(735654510450)8212333857()32896664(33)011419)10168910EA01D4501F13BC用动态规划法求如下0/1背包问题的最优解:有5个物品,其重量分别为(3,2,1,4,5),价值分别为(25,20,15,40...
1) n-queen problem n皇后问题 1. Based on evolutionary computation which has the techniques about searching for group, structure operators and adaptive function in genetic algorithm with integer-encoding, solute then-queen problem. 基于演化计算的群体搜索技术 ,采用整数编码构造遗传算子和自适应函数 ,对...