- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
八皇后递归C代码doc
#include iostream
using namespace std;
const int StackSize=8; //定义栈的最大高度
int ans=0; //初始化摆放方案计数器
template class T
class SeqStack //定义顺序栈模板类
{
public:
SeqStack(){top=-1;} //构造函数,初始化空栈
void Push(T x); //入栈
void Pop()//出栈
void SetQueen(int m); //摆放8皇后的递归函数,m为行数
bool Check(); //判断是否在同一行同一列同一斜线
void Print(); //打印棋盘
bool Empty(){if(top==-1) return true;else return false;}; //判别栈是否为空
private:
T data[StackSize]; //定义数组
int top; //栈顶指针
};
template class T
void SeqStackT::Push(T x) //入栈操作
{
if(top=StackSize-1) throw 上溢; //异常处理
top++; //栈顶指针上移
data[top]=x;
}
template class T
void SeqStackT::Pop() //出栈操作
{
if(Empty()) throw 下溢; //异常处理
top--; //栈顶指针下移
}
template class T
void SeqStackT::SetQueen(int m) //在栈顶放置符合条件的值的操作,即摆放皇后
{
for (int n=0;nStackSize;n++) //n为列,范围为0~7
{
Push(n); //n先入栈
if (Check()) //判断摆放皇后的位置是否安全
{
if (mStackSize-1) //若还没有放到第八个皇后,则进行下一个皇后的放置
SetQueen(m+1);
else
{
ans++; //解数加1
Print(); //打印成功的棋盘
}
}
Pop(); //若不符合条件则出栈
}
}
template class T
bool SeqStackT::Check() //判断摆放皇后的位置是否合法
{
for(int i=0;itop;i++) //依次检查前面各行的皇后位置
if(data[top]==data[i]||(abs(data[top]-data[i]))==(top-i)) //判断是否在同一列同一斜线
return false;
return true;
}
template class T
void SeqStackT::Print() //打印棋盘
{ cout第ans种摆放方法:endl;
int i,j;
for(i=0;iStackSize;i++)
{
coutendl; //换行操作
for(j=0;jStackSize;j++)
{
if(j==data[i])
coutQ ;
else
cout* ;
}
}
coutendl;
}
void main()
{
SeqStackint Queen; //定义类的对象
Queen.SetQueen(0); //从栈底开始赋值
cout所有可能的摆放方法共有:ansendl; //输出摆放方法的总数
}
您可能关注的文档
- 中考第一轮复习 第9课时 反比例函数.ppt
- 中银航空租赁私人有限公司净利润连续六年行业领先的地位或将丢失.doc
- 中心束管式光缆项目融资商业计划书-专家免费咨询.pdf
- 中频炉设备的操作规程以及注意事项.doc
- 丰富的物产 教学设计.doc
- 丰都县第三中学校德育实施细则.doc
- 为何垆土铁棍山药形状弯曲不直.pptx
- 为新农村建设提供法治保障.doc
- 为肥胖症患者设计营养食谱.doc
- 为西永安喝彩.doc
- (高清版)DB52∕T 689-2010 烤烟专业队伍建设作业规范 专业烘烤队伍.pdf
- (高清版)DB52∕T 692-2010 贵州省温泉旅游设施与服务.pdf
- (高清版)DB52∕T 713-2015 地理标志产品 雷山银球茶.pdf
- (高清版)DB52∕T 679-2010 贵州省标准化烟叶站(点)建设规范.pdf
- (高清版)DB52∕T 687-2010 烤烟专业队伍建设作业规范 专业植保队伍.pdf
- (高清版)DB52∕T 685-2010 烤烟专业队伍建设作业规范 专业育苗队伍.pdf
- (高清版)DB52∕T 705-2011 人工马尾松地径材积表.pdf
- (高清版)DB52∕T 722-2011 白栎次生薪炭林经营技术规程.pdf
- (高清版)DB52∕T 743-2012 金属冶炼行业 自吸过滤式防尘口罩.pdf
- (高清版)DB2201∕T 8-2021 行道树栽植与养护管理技术规范 .pdf
文档评论(0)