- 65
- 0
- 约1.08万字
- 约 9页
- 2019-08-04 发布于福建
- 举报
PAGE9 / NUMPAGES9
目录
TOC \o 1-3 \h \z \u 2-2 马的Hamilton周游路线问题 1
2-5.有重复元素的排列问题 3
2-6排列的字典序问题 4
2-7集合划分问题 5
4-1 会场安排问题 6
4-3 磁带最优存储问题 7
2-2 马的Hamilton周游路线问题
问题描述:
马的Hamilton周游路线问题*问题描述:8x8的国际象棋棋盘上的一只马,恰好走过除起点外的其它63个位置各一次,最后回到起点。这条路线称为一条马的Hamilton周游路线。对于给定的mxn的国际象棋棋盘, m和n均为大于5的偶数,且m-nl2,试设计一个分治算法找出一条马的Hamilton周游路线。
编程任务:
对于给定的偶数m, n6,且m-nl2,编程计算mxn的国际象棋棋盘一条马的Hamilton周游路线。
数据输入:
由文件input.txt给出输入数据。第一行有2个正整数m和n,表示给定的国际象棋棋盘由m行,每行n个格子组成。
结果输出:
程序运行结束时,将计算出的马的Hamilton周游路线用下面的2种表达方式输出到文件 output.txt中.
第1种表达方式按照马步的次序给出马的Hamilton周游路线。马的每一步用所在的方格坐标(x, y)来表示。x表示行的坐标,编号为0, 1, ..., m-1; y表示列的坐标,编号为0, 1, …, n-1,起始方格为(0, 0).
第2种表达方式在棋盘的方格中标明马到达该方格的步数。(0, 0)方格为起跳步,并明为第1步。
答案解析:
考虑到马有8种走法
????int dx[8]={-2,-1,1,2,-2,-1,2,1};
????int dy[8]={-1,-2,-2,-1,1,2,1,2};
? ? 之后就让马根据这八种走法来走不过还要考虑下面3种情况
? ? 第一种情况:
????如果马的下一步走法已经超出棋盘的范围了那么就不应该让马接下来走这一步转而去考虑其他的走法
? ? 第二种情况:
?????如果马的下一步是已经走过的那么就不应该让马接下来走这一步转而去考虑其他的走法
? ? 第三种情况:
如果马能够遍历完棋盘,那么就要考虑其最后一步是否可以通过上述的八种走法中的一种到达最开始的一步
//算法实现
#include stdio.h
#include stdlib.h
#include iostream
using namespace std;
#define max 101
int count = 0;
int m,n;//棋盘大小
int start_x,start_y;//起点位置
//考虑到马有8种走法
int dx[8]={-2,-1,1,2,-2,-1,2,1};
int dy[8]={-1,-2,-2,-1,1,2,1,2};
int board[max][max]={0};
//输出棋盘
void show(int m,int n){
for(int i = 0;im;i++){
for(int j = 0;jn;j++){
coutboard[i][j] ;
}
coutendl;
}
}
//判断下一步是否是起始的位置
int next_move(int x,int y){
for(int i = 0;i8;i++){
if(board[x+dx[i]][y+dy[i]] == 1){//1表示马的起始位置
return 1;
}
}
return 0;
}
//判断是否填了
int finish(int x,int y){
if(board[x][y] == 0){//0表示马没有走过 非0表示马已经走过
return 1;
}
return 0;
}
//马的下一步走法已经超出棋盘的范围了
int judge(int x,int y,int m,int n){
if(x=0xmy=0yn){
return 1;
}
return 0;
}
//马走的函数
void move(int x,int y,int num){
if(num == m*n+1next_move(x,y)){
cout++countendl;
show(m,n);//输出棋盘
coutendl;
return ;
}else{
for(int i = 0;i8;i++){
if(finish(x+dx[i],y+dy[i])judge(x+dx[i],y+dy[i],m,n)){//若不符合上述条件就表示马放弃之后会走这一步了
board[x+dx[i]][y+dy[i]] = num
您可能关注的文档
- 2018-2019学年广东省佛山一中、石门中学、顺德一中、国华纪中高二下学期期末四校联考试卷-数学(文)试卷.docx
- 资产清查损溢认定表.doc
- 2014怀柔区初一(下)期末数学.docx
- 第16章-循环流化床垃圾焚烧锅炉施工组织设计方案.doc
- 江西省丰城市2017-2018学年七年级语文下学期期末考试试题新人教版(修订版).doc
- 选择题突破第4题实验基本操作和操作—现象—结论的判断.doc
- 数学四年级口算.doc
- 北师大七年级数学下第三章复习总结.doc
- 第一课神奇的画图.ppt
- 王超玉气体的摩尔体积.ppt
- 抚顺石化工贸中心资金控制体系优化研究:理论、实践与创新.docx
- 探秘中华通草蛉滞育发育:生殖生物学特征与调控机制.docx
- 稀有鮈鲫受精机制及影响因素的深度剖析.docx
- 从美国强制反诉制度探寻我国民事诉讼反诉制度的革新路径.docx
- 中国职业足球管理体制:演进、困境与突破路径探究.docx
- 论我国网上个体经营活动法律规制的完善与实践.docx
- 论取保候审期间脱逃后又归案的自首认定困境与出路.docx
- 动调陀螺赋能双轴稳定平台控制系统的关键技术与优化策略研究.docx
- 论我国犯罪被害人国家补偿制度的构建与完善:法理、实践与发展路径.docx
- 光纤光栅传感监控软件:原理、应用与创新发展研究.docx
最近下载
- 2026年春教科版(新教材)小学科学二年级下册(全册)教学设计(附目录P91).pdf
- 2026年山东劳动职业技术学院单招(计算机)考试备考题库及答案解析(夺冠).docx VIP
- 超实用近五年(2021-2025)高考英语真题分类汇编:专题17 语法填空(全国通用)(原卷版).docx VIP
- 时尚流行文化解读.pptx VIP
- 文学类文本阅读青辰《梨花开了》【2023年四川省凉山州中考语文真题】.docx VIP
- 《毛笔楷书基础教程》职业院校书法课程全套教学课件.pptx
- (完整版)交管12123学法减分考试题库及答案.doc
- 2026年山东劳动职业技术学院单招(计算机)考试参考题库附答案.docx VIP
- 2025年教师资格考试高中学科知识与教学能力思想政治试卷与参考答案.docx VIP
- 基建项目财务咨询方案.docx VIP
原创力文档

文档评论(0)