资源简介
用c语言写的8数码游戏,在visual C++中打开即可
代码片段和文件信息
#include
#include
#include
struct node
{
int xy;
int cntdif;
int step;
int f[9];
int xy[3][3];
}queue[10000];
int map[3][3];
int dir[4][2]={{-10}{10}{01}{0-1}};
int hash[10000];
int zz[9];
int f1f2;
struct node sourdest;
int judge(int a[]) //用逆序数判断是否可达
{
int ijk=0;
for(i=1;i<9;i++)
if(a[i])
for(j=0;j if(a[j]>a[i])
k++;
return k;
}
int count(int a[]int b[]) //计算不一样的个数
{
int ij;
for(i=j=0;i<9;i++)
if(a[i]!=b[i])
j++;
return j;
}
int match(struct node m) //判断是否和末状态匹配
{ int ij;
for(i=0;i<9;i++)
if(m.f[i]!=zz[i])
return 0;
return 1;
}
int comp(const void *pconst void *q)
{
struct node *a=(struct node *)p;
struct node *b=(struct node *)q;
if(a->cntdif==b->cntdif)
return a->step-b->step;
return a->cntdif-b->cntdif;
}
int visit(int x[])//返回hash函数值
{
int icnt=1sum=0;
for(i=0;i<9;i++)
sum+=x[i]*cnt++;
return sum;
}
void print(int f[][3])
{
int ij;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf(“%d “f[i][j]);
printf(“\n“);
}
printf(“\n“);
}
void bfs()//广搜
{
int pvalijff[9]flin=0;
int head=0;
int tail=0;
memset(queue0sizeof(queue));
queue[head]=sour;
queue[head].cntdif=count(queue[head].fzz);
hash[head]=visit(queue[head].f);
print(queue[head].xy);//打印头结点
while(head<=tail)
{
struct node HH=queue[head++];
int sxsy;
for(p=0;p<4;p++)
{
flin=0;
for(i=0;i<9;i++)//把头结点的值赋在此
ff[i]=HH.f[i];
sx=HH.x+di
- 上一篇:算法精解-C语言描述源代码
- 下一篇:zuc算法代码
相关资源
- 算法精解-C语言描述源代码
- codeblocks-17.12mingw-setup网盘
- ue4,c++平面最小封闭区域识别
- vs2013 c++串口助手源码
- 尚观教育李慧芹Linux下C语言前嵌入式
- 华中科技大学C语言实验报告
- c++21点游戏
- 蛮力法求解旅行商问题C++
- 理发师睡觉问题
- 基于Linux C语言的多线程模拟智能家具
- 常用的VC界面模板
- c语言实现二维码生成
- 二维码驱动C语言
- 20多个常用的Hash算法C++ 实现
- 禁忌搜索算法C语言程序
- C++仿360新界面源代码
- 遗传、禁忌、模拟退火解背包问题
- C++语言程序设计 郑莉 第四版 课后题
- 蚁群算法C++版
- C语言课程设计报告-图书管理系统.z
- C++开发精灵对战小游戏
- C++与js相互调用
- 使用Qt做的数据管理系统
- c++测试题aaaa
- c++职工工资管理系统
- booth算法C语言实现
- 电梯模拟C语言数据结构中国地质大学
- CVSD解码c语言代码
- 分数计算器C++
- c++职工管理系统链表
评论
共有 条评论