• 八皇后问题


    问题描述:~省略

    实现算法:

    // EightQueen.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include <iostream>
    #include <math.h>
    using namespace std;
    
    //count为八个皇后
    int count = 8;
    //数组rst含义,下标代表行号,数组元素值为列号
    //存储的是八个皇后的位置(i,a[i])
    int rst[8] = {0};
    //sum计算解决方案数目
    int sum = 0;
    //查看在n行是否可以放下一个皇后
    //分析可知,若对于两个点(a,b)和(c,d)是不符合八皇后
    //的排列方式,那么有|a-c|等于|b-d|(对角线),或者a等于c
    //或者b等于d,归纳而言就是对于本题中的数组rst而言需要
    //有rst[a]等于rst[c],所以对于place而言只要有这两个条件
    //符合,那么这个置放就是非法的,返回false,否则返回true
    bool place(int n)
    {
    	for( int i=0; i<n; i++ )
    		if( abs(i-n)==abs(rst[i]-rst[n]) ||  
    			rst[i]==rst[n] ) return false;
    	return true;
    }
    //该函数是实现放置第n个皇后
    void EightQueen(int n)
    {
    	//已经放完,输出该种解决方案
    	if(n >= ::count)
    	{
    		cout << "第" << ++sum << "种方案:" << endl;
    		for(int i=0; i<::count; i++ )
    			cout << "(" << i << "," << rst[i] << "),";
    		cout << endl;
    	}
    	else
    	{
    		//对于第n行放第n个皇后,需要从
    		//该行的第一列遍历至最后一列
    		for(int i=0; i<::count; i++ )
    		{
    			//第n行放在地i列
    			rst[n] = i;
    			//若符合则放下一个皇后到下一行
    			if( place(n) ) EightQueen(n+1);
    		}
    	}
    
    }
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	EightQueen(0);
    	cout << "共有" << sum << "种解决方案!" << endl;
    	getchar();
    	return 0;
    }
    

    运行结果:

    第1种方案:
    (0,0),(1,4),(2,7),(3,5),(4,2),(5,6),(6,1),(7,3),
    第2种方案:
    (0,0),(1,5),(2,7),(3,2),(4,6),(5,3),(6,1),(7,4),
    第3种方案:
    (0,0),(1,6),(2,3),(3,5),(4,7),(5,1),(6,4),(7,2),
    第4种方案:
    (0,0),(1,6),(2,4),(3,7),(4,1),(5,3),(6,5),(7,2),
    第5种方案:
    (0,1),(1,3),(2,5),(3,7),(4,2),(5,0),(6,6),(7,4),
    第6种方案:
    (0,1),(1,4),(2,6),(3,0),(4,2),(5,7),(6,5),(7,3),
    第7种方案:
    (0,1),(1,4),(2,6),(3,3),(4,0),(5,7),(6,5),(7,2),
    第8种方案:
    (0,1),(1,5),(2,0),(3,6),(4,3),(5,7),(6,2),(7,4),
    第9种方案:
    (0,1),(1,5),(2,7),(3,2),(4,0),(5,3),(6,6),(7,4),
    第10种方案:
    (0,1),(1,6),(2,2),(3,5),(4,7),(5,4),(6,0),(7,3),
    第11种方案:
    (0,1),(1,6),(2,4),(3,7),(4,0),(5,3),(6,5),(7,2),
    第12种方案:
    (0,1),(1,7),(2,5),(3,0),(4,2),(5,4),(6,6),(7,3),
    第13种方案:
    (0,2),(1,0),(2,6),(3,4),(4,7),(5,1),(6,3),(7,5),
    第14种方案:
    (0,2),(1,4),(2,1),(3,7),(4,0),(5,6),(6,3),(7,5),
    第15种方案:
    (0,2),(1,4),(2,1),(3,7),(4,5),(5,3),(6,6),(7,0),
    第16种方案:
    (0,2),(1,4),(2,6),(3,0),(4,3),(5,1),(6,7),(7,5),
    第17种方案:
    (0,2),(1,4),(2,7),(3,3),(4,0),(5,6),(6,1),(7,5),
    第18种方案:
    (0,2),(1,5),(2,1),(3,4),(4,7),(5,0),(6,6),(7,3),
    第19种方案:
    (0,2),(1,5),(2,1),(3,6),(4,0),(5,3),(6,7),(7,4),
    第20种方案:
    (0,2),(1,5),(2,1),(3,6),(4,4),(5,0),(6,7),(7,3),
    第21种方案:
    (0,2),(1,5),(2,3),(3,0),(4,7),(5,4),(6,6),(7,1),
    第22种方案:
    (0,2),(1,5),(2,3),(3,1),(4,7),(5,4),(6,6),(7,0),
    第23种方案:
    (0,2),(1,5),(2,7),(3,0),(4,3),(5,6),(6,4),(7,1),
    第24种方案:
    (0,2),(1,5),(2,7),(3,0),(4,4),(5,6),(6,1),(7,3),
    第25种方案:
    (0,2),(1,5),(2,7),(3,1),(4,3),(5,0),(6,6),(7,4),
    第26种方案:
    (0,2),(1,6),(2,1),(3,7),(4,4),(5,0),(6,3),(7,5),
    第27种方案:
    (0,2),(1,6),(2,1),(3,7),(4,5),(5,3),(6,0),(7,4),
    第28种方案:
    (0,2),(1,7),(2,3),(3,6),(4,0),(5,5),(6,1),(7,4),
    第29种方案:
    (0,3),(1,0),(2,4),(3,7),(4,1),(5,6),(6,2),(7,5),
    第30种方案:
    (0,3),(1,0),(2,4),(3,7),(4,5),(5,2),(6,6),(7,1),
    第31种方案:
    (0,3),(1,1),(2,4),(3,7),(4,5),(5,0),(6,2),(7,6),
    第32种方案:
    (0,3),(1,1),(2,6),(3,2),(4,5),(5,7),(6,0),(7,4),
    第33种方案:
    (0,3),(1,1),(2,6),(3,2),(4,5),(5,7),(6,4),(7,0),
    第34种方案:
    (0,3),(1,1),(2,6),(3,4),(4,0),(5,7),(6,5),(7,2),
    第35种方案:
    (0,3),(1,1),(2,7),(3,4),(4,6),(5,0),(6,2),(7,5),
    第36种方案:
    (0,3),(1,1),(2,7),(3,5),(4,0),(5,2),(6,4),(7,6),
    第37种方案:
    (0,3),(1,5),(2,0),(3,4),(4,1),(5,7),(6,2),(7,6),
    第38种方案:
    (0,3),(1,5),(2,7),(3,1),(4,6),(5,0),(6,2),(7,4),
    第39种方案:
    (0,3),(1,5),(2,7),(3,2),(4,0),(5,6),(6,4),(7,1),
    第40种方案:
    (0,3),(1,6),(2,0),(3,7),(4,4),(5,1),(6,5),(7,2),
    第41种方案:
    (0,3),(1,6),(2,2),(3,7),(4,1),(5,4),(6,0),(7,5),
    第42种方案:
    (0,3),(1,6),(2,4),(3,1),(4,5),(5,0),(6,2),(7,7),
    第43种方案:
    (0,3),(1,6),(2,4),(3,2),(4,0),(5,5),(6,7),(7,1),
    第44种方案:
    (0,3),(1,7),(2,0),(3,2),(4,5),(5,1),(6,6),(7,4),
    第45种方案:
    (0,3),(1,7),(2,0),(3,4),(4,6),(5,1),(6,5),(7,2),
    第46种方案:
    (0,3),(1,7),(2,4),(3,2),(4,0),(5,6),(6,1),(7,5),
    第47种方案:
    (0,4),(1,0),(2,3),(3,5),(4,7),(5,1),(6,6),(7,2),
    第48种方案:
    (0,4),(1,0),(2,7),(3,3),(4,1),(5,6),(6,2),(7,5),
    第49种方案:
    (0,4),(1,0),(2,7),(3,5),(4,2),(5,6),(6,1),(7,3),
    第50种方案:
    (0,4),(1,1),(2,3),(3,5),(4,7),(5,2),(6,0),(7,6),
    第51种方案:
    (0,4),(1,1),(2,3),(3,6),(4,2),(5,7),(6,5),(7,0),
    第52种方案:
    (0,4),(1,1),(2,5),(3,0),(4,6),(5,3),(6,7),(7,2),
    第53种方案:
    (0,4),(1,1),(2,7),(3,0),(4,3),(5,6),(6,2),(7,5),
    第54种方案:
    (0,4),(1,2),(2,0),(3,5),(4,7),(5,1),(6,3),(7,6),
    第55种方案:
    (0,4),(1,2),(2,0),(3,6),(4,1),(5,7),(6,5),(7,3),
    第56种方案:
    (0,4),(1,2),(2,7),(3,3),(4,6),(5,0),(6,5),(7,1),
    第57种方案:
    (0,4),(1,6),(2,0),(3,2),(4,7),(5,5),(6,3),(7,1),
    第58种方案:
    (0,4),(1,6),(2,0),(3,3),(4,1),(5,7),(6,5),(7,2),
    第59种方案:
    (0,4),(1,6),(2,1),(3,3),(4,7),(5,0),(6,2),(7,5),
    第60种方案:
    (0,4),(1,6),(2,1),(3,5),(4,2),(5,0),(6,3),(7,7),
    第61种方案:
    (0,4),(1,6),(2,1),(3,5),(4,2),(5,0),(6,7),(7,3),
    第62种方案:
    (0,4),(1,6),(2,3),(3,0),(4,2),(5,7),(6,5),(7,1),
    第63种方案:
    (0,4),(1,7),(2,3),(3,0),(4,2),(5,5),(6,1),(7,6),
    第64种方案:
    (0,4),(1,7),(2,3),(3,0),(4,6),(5,1),(6,5),(7,2),
    第65种方案:
    (0,5),(1,0),(2,4),(3,1),(4,7),(5,2),(6,6),(7,3),
    第66种方案:
    (0,5),(1,1),(2,6),(3,0),(4,2),(5,4),(6,7),(7,3),
    第67种方案:
    (0,5),(1,1),(2,6),(3,0),(4,3),(5,7),(6,4),(7,2),
    第68种方案:
    (0,5),(1,2),(2,0),(3,6),(4,4),(5,7),(6,1),(7,3),
    第69种方案:
    (0,5),(1,2),(2,0),(3,7),(4,3),(5,1),(6,6),(7,4),
    第70种方案:
    (0,5),(1,2),(2,0),(3,7),(4,4),(5,1),(6,3),(7,6),
    第71种方案:
    (0,5),(1,2),(2,4),(3,6),(4,0),(5,3),(6,1),(7,7),
    第72种方案:
    (0,5),(1,2),(2,4),(3,7),(4,0),(5,3),(6,1),(7,6),
    第73种方案:
    (0,5),(1,2),(2,6),(3,1),(4,3),(5,7),(6,0),(7,4),
    第74种方案:
    (0,5),(1,2),(2,6),(3,1),(4,7),(5,4),(6,0),(7,3),
    第75种方案:
    (0,5),(1,2),(2,6),(3,3),(4,0),(5,7),(6,1),(7,4),
    第76种方案:
    (0,5),(1,3),(2,0),(3,4),(4,7),(5,1),(6,6),(7,2),
    第77种方案:
    (0,5),(1,3),(2,1),(3,7),(4,4),(5,6),(6,0),(7,2),
    第78种方案:
    (0,5),(1,3),(2,6),(3,0),(4,2),(5,4),(6,1),(7,7),
    第79种方案:
    (0,5),(1,3),(2,6),(3,0),(4,7),(5,1),(6,4),(7,2),
    第80种方案:
    (0,5),(1,7),(2,1),(3,3),(4,0),(5,6),(6,4),(7,2),
    第81种方案:
    (0,6),(1,0),(2,2),(3,7),(4,5),(5,3),(6,1),(7,4),
    第82种方案:
    (0,6),(1,1),(2,3),(3,0),(4,7),(5,4),(6,2),(7,5),
    第83种方案:
    (0,6),(1,1),(2,5),(3,2),(4,0),(5,3),(6,7),(7,4),
    第84种方案:
    (0,6),(1,2),(2,0),(3,5),(4,7),(5,4),(6,1),(7,3),
    第85种方案:
    (0,6),(1,2),(2,7),(3,1),(4,4),(5,0),(6,5),(7,3),
    第86种方案:
    (0,6),(1,3),(2,1),(3,4),(4,7),(5,0),(6,2),(7,5),
    第87种方案:
    (0,6),(1,3),(2,1),(3,7),(4,5),(5,0),(6,2),(7,4),
    第88种方案:
    (0,6),(1,4),(2,2),(3,0),(4,5),(5,7),(6,1),(7,3),
    第89种方案:
    (0,7),(1,1),(2,3),(3,0),(4,6),(5,4),(6,2),(7,5),
    第90种方案:
    (0,7),(1,1),(2,4),(3,2),(4,0),(5,6),(6,3),(7,5),
    第91种方案:
    (0,7),(1,2),(2,0),(3,5),(4,1),(5,4),(6,6),(7,3),
    第92种方案:
    (0,7),(1,3),(2,0),(3,2),(4,5),(5,1),(6,6),(7,4),
    共有92种解决方案!
    


  • 相关阅读:
    Spring Security配置logout地址
    flex布局
    视口的学习笔记
    box-sizing属性
    css清除浮动
    line-height的理解
    position和float小结
    css居中方法小结
    margin重叠
    浅谈负margin
  • 原文地址:https://www.cnblogs.com/arbboter/p/4225223.html
Copyright © 2020-2023  润新知