• 大小: 0.02M
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-03-28
  • 语言: 其他
  • 标签: 其他  

资源简介

在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字。棋盘中留有一个空格。空格周围的棋子可以移到空格中。要求解的问题是:给出一种初始布局(初始状态)和目标面局(目标状态),找到一种移动方法,实现从初始布局到目标布局的转变。

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 

using namespace std;

const int MAX = 1000000;        // 最大步数不会超过9!,循环队列不会超过9!*2大约72万

map mp;              // 记录是否搜索过
map path;             // 记录路径
// 查阅c++ map容器

char start[5][5] end[5][5];    // 棋牌布局数组(开始和结束)
int startInt endInt;           // 初始布局的整数状态(开始和结束)
int que[MAX + 1];               // BFS循环数组
int flag = false;
int dir[4][2] = {-1 0 0 -1 1 0 0 1};
                                // 记录方向的数组

// 该函数用于输入棋牌布局可以任意方式输入(0-8)9个数
void getLayout(char str[][5]) {

    for (int i=0; i<3; i++)
        for (int j=0; j<3; j++)
            cin >> str[i][j];
}

// 该函数用于输出棋牌布局 3*3格式输出
void putLayout(char str[][5]) {

    for (int i=0; i<3; i++) {
        for (int j=0; j<3; j++)
            cout << str[i][j] << ‘ ‘;
        cout << endl;
    }
}

// 该函数将布局转换成一个整数返回
// 因为要对每个布局进行标记 一个二维数组是没法标记的 所以转换成整数
int LayoutToInteger(char str[][5]) {

    char tm

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       5502  2012-12-26 08:35  算法课程设计棋盘问题\06.cpp

     文件      57856  2012-12-19 11:25  算法课程设计棋盘问题\算法实验周题目.doc

     目录          0  2012-12-31 19:17  算法课程设计棋盘问题

----------- ---------  ---------- -----  ----

                63358                    3


评论

共有 条评论