- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
南京理工优秀VC课程设计报告
南京理工大学VC++课程设计报告
课 程: VC++课程设计 系 别: 班 级: 09 学 号: 09 姓 名: 选题1名称: 八皇后问题 选题1难易级别: B级 选题2名称: 选题2难易级别: 自报成绩: 起止时间: 8月24日至9月9日 指导教师: 严悍
2010年 9月
目 录
课题目标
增加函数,完成每输入一组解,暂停屏幕,显示“按任意键继续!”。
完善程序,编程计算皇后问题共有几种排列方案。
增加输入,显示在第一个皇后确定后,共有几组排列。
将每组解的棋盘横向排列输出在屏幕上,将五个棋盘并排排列,即一次8行同时输出5个棋盘,同样完成一组解后屏幕暂停,按任意键继续。
求出在什么位置固定一个皇后后,解的数量最多,在什么位置固定一个皇后后,解的数量最少,最多解是多少,最少的解是多少,并将最多、最少解的皇后位置及所有的解求出,同样5个一组显示。
添加:增加输入错误检测,输入有误,则显示“你的输入有误,请重新输入!”
2 程序具体实现原理
2.1 总体方案
构建一个堆栈类和一个模板类,存储相关算法函数、输入输出函数、检测函数,通过用户的输入来选择操作过程,最后由程序算法输出结果。
2.1.1开发平台
操作系统:windows 7
开发软件:visual C++ 6.0
2.1.2基本原理
说明:程序开始,选择不同选项,可以依次实现以下功能:1、显示八皇后的所有排列方案。
2、确定一个皇后的位置,其他皇后的排列方案。3、将一皇后固定在某列,显示其中的最多与最少的方案。4、自主选择退出。5、程序中加入了输入查错功能,流程图中未显示。
2.2 程序各个功能说明
2.2.1 程序结构
A、类层次结构:
①堆栈的类:
class Stack
{
private:
SType data[SSize]; //存放数据
SType Top; //栈顶数据
public:
Stack() { Top = 0; } //构造函数
~Stack() { } //析构函数
bool isEmpty(){return!Top;} //置空栈内数据
bool Push(int); //处理压栈
bool Pop(int ); //处理出栈
friend void Empty(Stack ); //置空栈内数据, 在Solve函数执行前使用
}
②棋盘的类:
class Board
{private:
char board[8][8]; //一盘棋8*8
States Rows[8], DiagsLR[15], DiagsRL[15]; //行,左右斜线
char PrintBoard[100][8][8]; //输出的棋盘
public:
int nNum; //保存一组解的数目
static int AllNum; //保存所有方案的数目
Board(); //构造函数
bool isAttacked(int, int); //处理冲突
void PlaceQueen(int, int); //放入皇后
void RemoveQueen(int, int); //移去皇后
void Print(int,int); //前一个参数保存一行输出解的个数,后一个参数保存共输出解的数目
void SaveBoard(); //解决一组解后保存到PrintBoard数组中
void SaveAll(); //保存所有八皇后问题的解
friend void Empty(Board ); //置空栈内数据, 在Solve函数执行前使用
};
2.2.2 课程设计要求的实现
①如何使每输入完一组数据后,显示“按任意键继续!”?
if(c==N){ //输出对应的所有解,一行排列五组
for(i=0;inum;i++){
if(num-iN) break; //当剩余解数大于五组可以并排显示时
for(j=0;j8;j++){
for(n=0;nN;n++){
for(k=0;k8;k++)
coutPrintBoard[i+n][j][k]flush;
cout\t;
}
cout\n;
} //至此已经完成输出一排五组解
i+=N-1; //跳过已输出的五组解
cout按任意键继续. . .\nflush;
②八皇后问题共有几种排列?
通过SolveAll()函数来解决八皇后的算法问题,进而得到答案
void SolveAll()
{
for(i=0;i7;i++){
int row=i,col=0,exi
您可能关注的文档
- 基于精细加工理论的英语词汇学习研究.doc
- 八年级月考模拟.docx
- 托福句子简化题120.docx
- 天津高考英语模拟试题二.doc
- 航天航空英语词汇.doc
- 63课回头再说教案交.doc
- 河南2013选词填空+补全对话各5篇含答案.doc
- CET四级翻译:中国历史与文化.docx
- 人教版高中英语高一上学期第一次月考试题.doc
- 英国文学简史 (刘炳善著 河南人民出版社)笔记part1-2.doc
- 2024高考物理一轮复习规范演练7共点力的平衡含解析新人教版.doc
- 高中语文第5课苏轼词两首学案3新人教版必修4.doc
- 2024_2025学年高中英语课时分层作业9Unit3LifeinthefutureSectionⅢⅣ含解析新人教版必修5.doc
- 2024_2025学年新教材高中英语模块素养检测含解析译林版必修第一册.doc
- 2024_2025学年新教材高中英语单元综合检测5含解析外研版选择性必修第一册.doc
- 2024高考政治一轮复习第1单元生活与消费第三课多彩的消费练习含解析新人教版必修1.doc
- 2024_2025学年新教材高中英语WELCOMEUNITSectionⅡReadingandThi.doc
- 2024_2025学年高中历史专题九当今世界政治格局的多极化趋势测评含解析人民版必修1.docx
- 2024高考生物一轮复习第9单元生物与环境第29讲生态系统的结构和功能教案.docx
- 2024_2025学年新教材高中英语UNIT5LANGUAGESAROUNDTHEWORLDSect.doc
文档评论(0)