- 12
- 0
- 约7.07千字
- 约 9页
- 2017-01-06 发布于贵州
- 举报
九宫格实现算法九宫格实现算法
实验目的:通过visual c++进行算法编辑,准确掌握算法运行方式及流程。
通过程序实现类似九宫格的拼图效果,也叫做八方块。用最快的时间实现最后的效果:1 2 3
4 5 6
7 8 0
实验原理:先实现一个三行三列数组,再依次比较第一个数与上下左右数值的大小,进行移动,最后实现效果图。计算出一共移动的步数和每移一步的效果。
实验内容:
程序代码如下:
// 8block.cpp : 定义控制台应用程序的入口点。
//
#include stdafx.h
#include stdio.h
#include stdlib.h
#include time.h
#define GOAL 123804765//表示我们要找得目标状态
struct Node
{
short state[9];//存放结点的状态
short pos;//空格所在的位置,在数组中用0代表空格
struct Node *up;//空格上移后的状态
struct Node *down;//空格下移后的状态
struct Node *left;//空格左移后的状态
struct Node *right;//空格右移后的状态
struct Node *parent;//它是从哪一状态变换而来的
struct Node *next;//表示在队列中的下一个状态
} ;
struct Tree
{
short key;//表示当前结点的数值
short * state;//表示当前状态的整个数组,当整颗树生成完毕后这一数组将被释放
short index;//表示当前数值在数组中的位置
bool visited;//对于叶子结点而言,表示这一结点是否被访问过
struct Tree * next;//指向它的(下一个)兄弟结点,表示这一位置的下一个数
struct Tree *down;//指向它的第一个孩子结点,表示下一位置的第一个数
};
struct Queue//定义一个队列用于广度优先遍历
{
struct Node * front;
struct Node * rear;
};
void InitQueue(struct Queue *Q);//初始化一个空队列
bool QueueEmpty(struct Queue *Q);//判断队列是否为空
void EnQueue(struct Queue *Q,struct Node *N);//入队列
struct Node * DeQueue(struct Queue *Q);//出队列,返回队结点
void ClearQueue(struct Queue *Q);//清空队列
struct Node * GetBestPath(struct Node *tree);//找到一个最短路径,并返回最后的状态结点,如果没有路径返回NULL
struct Tree * CreateCheckTree();//生成一个用于检查状态的查询树
void CreateSubCheckTree(struct Tree * T);//生成状态检查子树
void FreeCheckTree(struct Tree * checkTree);//释放状态检查树的空间
int checkCount=0;//检查结点状态次数
int deCount=0;//出队列次数
int enCount=0;//入队列次数
struct Tree * checkTree;
void main()
{
struct Node* tree=new struct Node;
tree-parent=NULL;
printf(输入0-8的任意一个排列,其中0表示空格所在的位置:\n);
for(int i=0;i=8;i++)
{
scanf(%d,tree-state[i]);
}
for(int i=0;i=8;i++)
{
if(tree-state [i]==0)
{
tree-pos =i;
}
}
tree-next =NULL;
int c1=clock();
struct Node *result=GetBestPath(tree);
int c2=clock();
double t=(c2-c1)/1000.0;
printf(状态检查次数:%d,入队列次数:=%d,出队列次数:%d\n,checkCount,enCount,deCount);
if(result!=NULL)
{
int pat
您可能关注的文档
- 乒乓球大赛总结.doc
- 乘上列车去画画.doc
- 乘与除教案乘与除教案.doc
- 乘公共汽车(重点课).doc
- 乘势而上 锐意进取.doc
- 乘务民警岗位手册题库.doc
- 乘法公式教学设计.doc
- 乘数、利率及其他.doc
- 乘法分配律_徐笑薇.doc
- 乘法分配律——钟婷燕.doc
- 2025-2026学年天津市和平区高三(上)期末数学试卷(含解析).pdf
- 2025-2026学年云南省楚雄州高三(上)期末数学试卷(含答案).pdf
- 2025-2026学年甘肃省天水市张家川实验中学高三(上)期末数学试卷(含答案).docx
- 2025-2026学年福建省厦门市松柏中学高二(上)期末数学试卷(含答案).docx
- 2025-2026学年广西钦州市高一(上)期末物理试卷(含答案).docx
- 2025-2026学年河北省邯郸市临漳县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省石家庄二十三中七年级(上)期末历史试卷(含答案).docx
- 2025-2026学年海南省五指山市九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省唐山市玉田县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省邢台市市区九年级(上)期末化学试卷(含答案).docx
最近下载
- 原调正谱G小小蝴蝶la farfalletta钢琴伴奏高清打印版.pdf VIP
- 上海大学2024-2025学年第1学期《高等数学(上)》期末考试试卷(B卷)附参考答案.pdf
- 广发证券-交通银行-601328-零售转型提速,定增落地夯实资本根基.pdf
- 上海大学2024-2025学年第1学期《高等数学(上)》期末考试试卷(A卷)附参考答案.pdf
- 循环系统护理小讲课.pptx
- 建筑屋面西瓦专项施工方案(范本).doc VIP
- 2024年山东铝业职业学院单招综合素质考试题库及答案1套.docx VIP
- 探究TIPS术后支架堵塞的影响因素及抗凝治疗的必要性:基于多维度分析与临床实践.docx
- 成品仓库出货明细表.pdf VIP
- 贵州省黔西南州2025年中考数学试卷及答案.pdf VIP
原创力文档

文档评论(0)