📄 八皇后问题.cpp
字号:
//&代表皇后位置
#include "iostream"
#include "iomanip"
#define N 8
using namespace std;
char array[N][N]={""};
void input(int m,int n);
void output();
int set_queen(int m);
void copy_arrayay(int num);
int main()
{
int m=0;
set_queen(m);
system("pause");
return 0;
}
void input(int m,int n)
{
for(int i=0;i<N;i++)
array[i][n]='*';
for(int j=0;j<N;j++)
array[m][j]='*';
int p,q;
p=m,q=n;
for(p++,q++;p<N && q<N;p++,q++)
array[p][q]='*';
p=m,q=n;
for(p--,q--;p>=0 && q>=0;p--,q--)
array[p][q]='*';
int a,b;
a=m,b=n;
for(a++,b--;a<N && b>=0;a++,b--)
array[a][b]='*';
a=m,b=n;
for(a--,b++;a>=0 && b<N;a--,b++)
array[a][b]='*';
array[m][n]='&';
}
void output()
{
int count=1;
cout<<"this is the "<<++count<<"mathod:\n";
for(int i=0;i<N;i++)
{
for(int j=0;j<N;j++)
cout<<setw(3)<<array[i][j];
cout<<endl;
}
cout<<"-------------"<<endl;
}
int set_queen(int m)
{
char array_2[N][N];
if(m==N)
{
output();
return 1;
}
for(int i=0;i<N;i++)
{
int k,j;
if(array[m][i]=='*')
continue;
for(k=0;k<N;k++)
for(j=0;j<N;j++)
array_2[k][j]=array[k][j];
array[m][i]='&';
input(m,i);
set_queen(m+1);
for(k=0;k<N;k++)
for(j=0;j<N;j++)
array[k][j]=array_2[k][j];
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -