八皇后问题(递归版)

 #include<iostream>

using namespace std;
 
int a[20];//记录皇后的位置
int b[20];//记录列是否被占
int c[40];//主对角线是否被占
int d[40];//次对角线是否被占
int n;
void output()
{
int i;
for(i=1;i<=n;i++)
cout<<a[i]<<" ";
cout<<endl;
}
void try1(int i)
{
int j;
for(j=1;j<=n;j++)
{
if(b[j]==0&&c[i+j]==0&&d[i-j+n]==0)
{
a[i]=j;
b[j]=1;
c[i+j]=1;
d[i-j+n]=1;
if(i<n)
try1(i+1);
else
output();
b[j]=0;
c[i+j]=0;
d[i-j+n]=0;
}
}
}
int main()
{
cout<<"请输入小于20的正整数:"<<endl;
cin>>n;
int i;
for(i=1;i<=n;i++)
{
b[i]=0;
c[i]=0;
c[i+n]=0;
d[i]=0;
d[i+n]=0;
}
try1(1);
return 0;
}

你可能感兴趣的:(递归,职场,八皇后,回溯,休闲)