这是本猫的洛谷号,求关注!
大家好好好好好啊!
又是偶!
今天给大家带来一道搜索与回溯算法的题
八皇后问题!
#include<bits/stdc++.h>
using namespace std;
int a[100],num=8,t=1;//a中存放找到的合适的列数,num为皇后。
void queen(int n)
{
int i;
if(n==num)//如果是8就输出
{
printf("No. %d\n",t++);
for(i=0;i<num;++i){
for(int j=0;j<num;j++){
if(i==a[j])//行与a中的列同时,输出1,能放的位置。
printf("1 ");
else
printf("0 ");
}
printf("\n");}
return ;
}
for(i=0;i<num;++i){//列
int j;
for(j=0;j<n;++j){//行
if(a[j]==i||abs(a[j]-i)==abs(n-j))//不能放的位置
break;
}
if(j==n){
a[n]=i;
queen(n+1);
}
}
}
int main()
{
queen(0);
return 0;
}
求关注QAQ