经典回溯问题----n皇后
n皇后问题不用多说,基本都知道。回溯算法也不用多说,还是比较简单的,给我的感觉就是不停的找一颗子树或一个排列,并加上判断以回溯。
<span style="font-size:18px">/*
* 经典回溯问题-----n皇后
*/
#include<iostream>
using namespace std;
#define MAX 1024
int N;
int column[MAX];//每行对应的列值
int sum=0;
bool Place(int row,int col)//判断是否该行可以放置皇后
{
int i=1;
for(i;i<row;i++)
{
if((column[i]-col)==(i-row)||(column[i]-col)==(row-i)||column[i]==col)
return false;
}
return true;
}
void backTrace(int k)//回溯函数
{
int i;
if(k>N)
{
cout<<"路径"<<++sum<<"序列为: ";
for(i=1;i<=N;i++)
cout<<column[i]<<" ";
cout<<endl;
}
else
{
for(i=1;i<=N;i++)
{
if(Place(k,i))
{
column[k]=i;
backTrace(k+1);
}
}
}
}
void main()
{
cout<<"输入皇后数:";
cin>>N;
backTrace(1);
}</span>
补充:软件开发 , C++ ,