?? 八皇后.cpp
字號:
#include "iostream"
#include "iomanip"
#define N 8
using namespace std;
char arr[N][N]={""};
int count=0;
int main()
{
void input(int m,int n);
void output();
int set_queen(int m);
void copy_arr(int num);
int m=0;
set_queen(m);
return 0;
}
void input(int m,int n)
{
for(int i=0;i<N;i++)
arr[i][n]='*';
for(int j=0;j<N;j++)
arr[m][j]='*';
int p,q;
p=m,q=n;
for(p++,q++;p<N && q<N;p++,q++)
arr[p][q]='*';
p=m,q=n;
for(p--,q--;p>=0 && q>=0;p--,q--)
arr[p][q]='*';
int a,b;
a=m,b=n;
for(a++,b--;a<N && b>=0;a++,b--)
arr[a][b]='*';
a=m,b=n;
for(a--,b++;a>=0 && b<N;a--,b++)
arr[a][b]='*';
arr[m][n]='&';
}
void output()
{
cout<<"this is the "<<++count<<"mathod:\n";
for(int i=0;i<N;i++)
{
for(int j=0;j<N;j++)
cout<<setw(3)<<arr[i][j];
cout<<endl;
}
cout<<"-------------"<<endl;
}
int set_queen(int m)
{
char arr_2[N][N];
if(m==N)
{
output();return 1;
}
for(int i=0;i<N;i++)
{
int k,j;
if(arr[m][i]=='*')continue;
for(k=0;k<N;k++)
for(j=0;j<N;j++)
arr_2[k][j]=arr[k][j];
arr[m][i]='&';
input(m,i);
set_queen(m+1);
for(k=0;k<N;k++)
for(j=0;j<N;j++)
arr[k][j]=arr_2[k][j];
}
return 0;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -