?? bahuanghou.cpp
字號(hào):
#include<iostream>
using namespace std;
class CQueen
{
int aQueen[8];
int sum;
public:
CQueen();
int judge(int x,int y);
void show();
void step();
};
CQueen::CQueen()
{
sum=0;
for(int i=0;i<8;i++)
aQueen[i]=0;
}
int CQueen::judge(int x,int y)
{
for(int i=0;i<x;i++)
if(aQueen[i]==y || aQueen[i]+x-i==y || aQueen[i]-x+i==y) return 0;
return 1;
}
void CQueen::step()
{
int x=0,y=0;
while(aQueen[0]<8)
{
while(y<8)
{
if(judge(x,y))
{
aQueen[x]=y;
x++;
y=0;
}
else y++;
if(y==8&&x!=8)
if(aQueen[--x]!=7) y=++aQueen[x];
else if(aQueen[0]!=7)
y=++aQueen[--x];
else
aQueen[0]=8;
}
if(x==8)
{
show();
if(aQueen[--x]!=7) y=++aQueen[x];
else y=++aQueen[--x];
}
}
}//算法
void CQueen::show()
{
//可以顯示棋盤(pán)
cout<<"\t---------------------------------\n";
for(int i=0;i<8;i++)
{
cout<<"\t| ";
for(int j=0;j<aQueen[i];j++)
cout<<" | ";
cout<<"* | ";
for(j++;j<8;j++)
cout<<" | ";
cout<<"\n\t---------------------------------\n";
}
cout<<"坐標(biāo)為:\t";
for(int k=0;k<8;k++)
cout<<'('<<k+1<<','<<aQueen[k]+1<<") ";
cout<<'\t'<<++sum<<endl;
}
void main()
{
CQueen a;
a.step();
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -