⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bahuanghou.cpp

📁 八皇后问题
💻 CPP
字号:
#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() 
{ 
//可以显示棋盘 
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<<"坐标为:\t"; 
for(int k=0;k<8;k++) 
cout<<'('<<k+1<<','<<aQueen[k]+1<<") "; 
cout<<'\t'<<++sum<<endl; 
} 
void main() 
{ 
CQueen a; 
a.step(); 
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -