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

📄 八皇后.cpp

📁 八皇后了看见发 疯狂数据分类开始减肥凯撒福建考生独立开发就
💻 CPP
字号:
#include<iostream> 
#include<cmath> 
using namespace std; 
void  queen(int  row/*行*/,  int  col/*列*/) 
{ 
static int queen_col[8],count=0,i; 
for(i= 0;i<row;i++)  
if(col==queen_col[i]/*2皇后再同一列上*/||row-i==abs(queen_col[i]-col)/*2皇后在同一对角线上*/)  return; 
queen_col[row]=col;//记录皇后的位置 
if(row<7)
  for(int i=0;i<8;i++)  queen(row+1,i);//填写下一行皇后可能的位置 
else  //输出八皇后问题可行方案
 { 
   cout <<'('<<++count<<')'<<endl; 
   for(i=0;i <8;i++)
  { 
   for(int j=0;j<8;j++)  cout<<(j==queen_col[i]); 
   cout<<endl; 
   } 
   cin.get(); 
 } 
} 

void  main() 
{ 
cout<<"按回车键查看下一种摆放方法:"<<endl;
for  (int  i=0;i <8;i++)  queen(0,i);//填写皇后第一皇可能出现的位置 
} 
//总体思路是先填第一行皇后可能的位置 for  (int i=0;i<8;i++)  queen(0,i); 
//然后检查这个皇后位置是否可行 通过这句代码检测 
//for  (i = 0;i<row;i++)  
//if  (col==queen_col[i]/*2皇后再同列上*/  | |  row - i ==abs(queen_col[i]-col)/*2皇后在对角线上*/)  return; 
//如不可行就把它裁剪掉 在检查另一个皇后位置 
//如可行 就把这个位置记录到数组 queen_col[8]中去, 
//queen_col[8] 用来记录皇后所在的位置,queen_col[0]表示皇后在第一行的queen_col[0]列 queen_col[1]表示皇后在第一行的queen_col[1]列 等 
//然后检测下一行皇后可能出现的位置 if  (row <7)  for  (int  i=0;i <8;i++)  queen(row+1,i); 
//row ==7时 表示已经得到一组解 ,然后输出

⌨️ 快捷键说明

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