八皇后c++代码

  • 格式:pdf
  • 大小:51.96 KB
  • 文档页数:3
return false; return true; }
//依次检查 //判断是否
template <class T> void QueStack<T>::Print() 形式打印成棋盘形式 {
cout<<"NO."<<num<<":"<<endl; for(int i=0;i<MAXSIZE;i++)
throw
template <class T> void QueStack<T>::Pop() {
if(-1==top) throw "down overflow"; top--; 下移 }
//定义栈的最大
//定义顺序
//构 //入栈 //出栈 //摆放 8 皇后 //判断是否在同 //打印棋盘 //定义数组
void Push(T x); void Pop(); void SetPlace(); void Begin(QueStack a); 的递归函数 bool Judge(); 一行同一列同一斜线 void Print(); private: T data[MAXSIZE]; int top; int num; 摆放方案计数器//栈顶指针 }; template <class T> void QueStack<T>::Push(T x) { if(top>=MAXSIZE-1) //栈顶指针上移 data[++top]=x; }
if (top!=(MAXSIZE-1)) 放到第八个皇后,则进行下一个皇后的放置
SetPlace(); else {
num++; Print(); 棋盘 } } Pop(); 条件则出栈 }
//在栈顶放置符合条件 //穷尽 0~7,即穷尽列
//判断摆放皇后 //若还没有
//解数加 1 //打印成功的
//若不符合
}
template <class T> bool QueStack<T>::Judge() {
for(int i=0;i<top;i++) 前面各行的皇后位置
if(data[top]==data[i]||(abs(data[top]-data[i]))==(top-i)) 在同一列同一斜线
a.SetPlace(); cout<<"方法总数为:"<<a.num<<endl; }
void main() {
QueStack<int> Queen; Queen.Begin(Queen); system("pause"); }
//定义类的对象
#include <iostream> #include"windows.h" using namespace std;
const int MAXSIZE=8; 高度
template <class T> class QueStack 栈模板类 { public:
QueStack(){top=-1; num=0;} 造函数,初始化空栈
//将栈的数组
{ for(int j=0;j<MAXSIZE;j++) { if(j==data[i]) { cout<<"*"; } else {cout<<"-";} } cout<<endl;//换行
} Sleep(100); //cout<<endl; }
template<class T> void QueStack<T>::Begin(QueStack a) {
//初始化
//入栈操作
ቤተ መጻሕፍቲ ባይዱ
"up
overflow";
//出栈操作 //栈顶指针
template <class T> void QueStack<T>::SetPlace() 的值的操作,即摆放皇后 {
for (int i=0;i<MAXSIZE;i++) {
Push(i); if (Judge()) 的位置是否安全 {