八皇后问题的全排列解法
来源:互联网 发布:信用评分卡模型python 编辑:程序博客网 时间:2024/05/01 21:32
本文转自微软何海涛的微博。微博网址:http://zhedahht.blog.163.com/
直接上代码:
#include<iostream>#include<vector>#include<string>#include<algorithm>using namespace std;int g_number = 0;//全局变量,记录解法的总数void Permutation(int ColumnIndex[], int length, int index);bool Check(int ColumnIndex[], int length);void PrintQueen(int ColumnIndex[], int length);void EightQueen(){const int queens = 8;int ColumnIndex[queens];for (int i = 0; i < queens; i++)ColumnIndex[i] = i;Permutation(ColumnIndex, queens, 0);//全排列}void Permutation(int ColumnIndex[], int length, int index){if (index == length){if (Check(ColumnIndex, length))//检测某一个全排列是否满足条件{++g_number;PrintQueen(ColumnIndex, length);//打印出满足条件的解}}else{for (int i = index; i < length; i++){int temp = ColumnIndex[i];ColumnIndex[i] = ColumnIndex[index];ColumnIndex[index] = temp;Permutation(ColumnIndex, length, index + 1);temp = ColumnIndex[index];ColumnIndex[index] = ColumnIndex[i];ColumnIndex[i] = temp;}}}bool Check(int ColumnIndex[], int length)//检测某一个全排列是否满足条件{for (int i = 0; i < length; i++){for (int j = i + 1; j < length; j++){if (abs(i - j) == abs(ColumnIndex[i] - ColumnIndex[j]))return false;}}return true;}void PrintQueen(int ColumnIndex[], int length)//打印出满足条件的全排列{cout << "Solution " << g_number << endl;for (int i = 0; i < length; i++)cout << ColumnIndex[i] << ' ';cout << endl;}void main(){EightQueen();cin.get();}
0 0
- 八皇后问题的全排列解法
- 八皇后问题的全排列解法
- 利用全排列八皇后问题的一种解法
- 全排列问题、八皇后问题、组合问题的递归解法
- 八皇后问题的解法
- 字符串数组的全排列到八皇后问题详解
- 字符串数组的全排列到八皇后问题详解
- 运用全排列的方法解决八皇后问题
- 八皇后问题和字符串全排列
- 全排列方法求解八皇后问题
- 八皇后问题--全排列法[Java]
- 全排列与八皇后的转化
- 八皇后问题解法
- 八皇后问题解法
- 八皇后问题解法
- 八皇后问题解法
- 《编程之法》1.3字符串的全排列,组合,重复排列,八皇后问题
- 八皇后问题的递归解法
- AppAppStore发版前要做的检查项
- js比较两个数组对象,取出不同的值
- 基于Linux的S3C6410嵌入式平台的外围设备驱动程序、Makefile及测试程序的实现
- Static
- tjut 3450
- 八皇后问题的全排列解法
- MarkDown语法大全
- uva1354 枚举二叉树
- hexo+coding搭建博客
- 整数划分(四)
- 自动装箱与自动拆箱
- Android学习之使用手机网络和GPS定位
- Centos下PHP配置sublime+xdebug
- mybatis 在xml文件中处理大于号小于号的方法