资源简介
C++ 骑士周游列国(跳马问题)
内附报告详解设计过程
代码片段和文件信息
//by ngl
#include
#include
#include
int bushu[8][8]; // bushu[i][j]表示骑士到达棋盘上位置(ij)的行走步数
int x y ; //记录骑士所在位置的x、y坐标
int count=0; //记录骑士周游列国的方法数
int movexy[8][2]={{-21} {-12} {12} {21} {2-1} {1-2} {-1-2} {-2-1}}; //骑士在当前位置可以选择行走的8个位置
void output() //搜索到叶结点时,找到一种骑士周游列国的方法,输出骑士行走路径的8*8矩阵
{
cout<<“方法“< for(int i = 0 ; i < 8 ; i++) //输出骑士行走路径的8*8矩阵
{
for(int j = 0 ; j < 8 ; j++)
printf(“%4d“ bushu[i][j]);
cout< }
system(“pause“); //由于骑士周游列国有很多种行走方法,每输出一种方法等待键盘输入再输出另一种方法,
//这里不调用system(“pause“)结果输出很快,会看不清楚
}
void knight(int k) //递归回溯法解骑士周游列国问题
{
if(k == 64) //搜索到叶结点时,找到一种骑士周游列国的方法
{
count++; //方法数自增1
output(); //输出骑士行走路径的8*8矩阵
return;
}
//搜索子树
for(int i = 0 ; i < 8 ; i++) //生成当前扩展结点的8个儿子结点
{
int r = x + movexy[i][0]; //骑士选择第i个位置行走
int c = y + movexy[i][1];
if(r >= 0 && r < 8 && c >= 0 && c < 8 && bushu[r][c] == 0) //当前位置可行
{
x = r ;
y = c;
bushu[r][c] = k + 1; //解空间树树中第k层结点的步数为k+1
knight(k+1); //搜索子树
bushu[r][c] = 0; //往上回溯时,恢复相关值
x = r - movexy[i][0];
y = c - movexy[i][1];
}
}
}
int main()
{
for(int i = 0 ; i < 8; i++)
for(int j = 0 ; j < 8 ; j++)
bushu[i][j] = 0;
bushu[0][0]=1; //以(00)为起点的周游路线。
cout<<“其实初始位置为(00)“< <<“数字代表的是第几步:\n“< knight(1); //由于骑士的初始位置已经确定了,所以回溯算法调用knight(1)
system(“PAUSE“);
return 0;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2144 2010-12-15 19:17 骑士周游列国\program\骑士周游列国.cpp
文件 3475 2010-12-15 19:19 骑士周游列国\program\骑士周游列国.dsp
文件 33792 2010-12-15 19:19 骑士周游列国\program\骑士周游列国.ncb
文件 1219 2010-12-15 19:19 骑士周游列国\program\骑士周游列国.plg
文件 48640 2010-12-15 19:19 骑士周游列国\program\骑士周游列国.opt
文件 549 2010-12-15 19:19 骑士周游列国\program\骑士周游列国.dsw
文件 1972736 2010-12-15 19:20 骑士周游列国\骑士周游列国.doc
目录 0 2010-12-15 19:16 骑士周游列国\program
目录 0 2010-12-15 19:16 骑士周游列国
----------- --------- ---------- ----- ----
2062555 9
- 上一篇:欧拉法及改进的欧拉法求解方程
- 下一篇:非线性Granger因果检验.zip
相关资源
- VC++ 使用RSA算法防止非法注册机破解软
- VC++开发GIS系统代码陈建春书
- shallow water equation c++ code
- C++实现小型数据库DBMS,具备建表以及
- 模拟的DBMS
- 实现用c++产生高斯噪声
- c++远程控制源代码
- 自己写的远控代码 C++
- C++课程设计公司人员管理系统
- C++程序设计 Y.Daniel Liang著 习题答案
- 纯C++方式生成复杂格式的excel文件(
- 清华大学C++课件
- g711音频编解码(C/C++)实现
- VC++ MFC MSCOMM VS2010 手把手学会串口收发
- C++ 家庭理财管理系统
- 基于VisualC++ 6.0的服装试穿管理系统
- 64bit linux libstdc++.so.6.0.10
- VC++解析并显示JPEG图片showjpeg.rar
- C++写的车辆信息管理系统
- 学生选课管理系统C++
- 面向对象C++笔记
- vc++能够显示网页html
- C++屏幕抓屏软件源代码
- 新安江模型修改
- C++仿最新版360安全卫士主界面基于稍
- VCLSkin 5.60.for.Delphi.C++Builder 5-2010 Full
- Boost Asio C++ 网络编程 中文最新版 PD
- C++使用ADO连接Access数据库源代码(修
- Linux串口操作RS232-C++
- 浙江大学-翁凯-C++课件+源代码8
评论
共有 条评论