#include "iostream"
#define max 100
using namespace std;
bool unguarded(int A[],int m)
{
int n;
for(n=0;n<m;n++)
{
if((A[n]==A[m])||((A[n]+n)==(A[m]+m))||((A[n]-n)==(A[m]-m))||((n -A[n])==(m-A[m])))
return false;
}
return true;
}
int main()
{
int n,i,A[max],s=1;
cout<<"请输入皇后的个数"<<endl;
cin>>n;
if((n<=3)||(n>=100))
cout<<"请不要输入1、2、3或者大于100的数!"<<endl;
else
{
for(i=0;i<n;i++) A[i]=0;
i=0;
while(i>=0)
{
if(A[i]<=n-1)
{
if(!unguarded(A,i)) A[i]++;
else
{
if(i<n-1) i++;
else
{
cout<<"第"<<s<<"个:"<<endl;
//num=num+1;
for(int j=0;j<n;j++)
{
for(int d=0;d<n;d++){
if(d!=A[j])
cout<<"X"<<' ';
else
cout<<"Q"<<' ';
}
cout<<endl;
}
s+=1;
if(s>3)
{
break;
}
else{
A[n-1]++;
}
}
}
}
else {
A[i]=0; i--;
if(i>=0) A[i]++;}
}
}
return 0;
#define max 100
using namespace std;
bool unguarded(int A[],int m)
{
int n;
for(n=0;n<m;n++)
{
if((A[n]==A[m])||((A[n]+n)==(A[m]+m))||((A[n]-n)==(A[m]-m))||((n -A[n])==(m-A[m])))
return false;
}
return true;
}
int main()
{
int n,i,A[max],s=1;
cout<<"请输入皇后的个数"<<endl;
cin>>n;
if((n<=3)||(n>=100))
cout<<"请不要输入1、2、3或者大于100的数!"<<endl;
else
{
for(i=0;i<n;i++) A[i]=0;
i=0;
while(i>=0)
{
if(A[i]<=n-1)
{
if(!unguarded(A,i)) A[i]++;
else
{
if(i<n-1) i++;
else
{
cout<<"第"<<s<<"个:"<<endl;
//num=num+1;
for(int j=0;j<n;j++)
{
for(int d=0;d<n;d++){
if(d!=A[j])
cout<<"X"<<' ';
else
cout<<"Q"<<' ';
}
cout<<endl;
}
s+=1;
if(s>3)
{
break;
}
else{
A[n-1]++;
}
}
}
}
else {
A[i]=0; i--;
if(i>=0) A[i]++;}
}
}
return 0;
}