资源简介
用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++中头文件与源文件的作用详解
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- C语言代码高亮html输出工具
- 猜数字游戏 c语言代码
- C语言课程设计
- 数字电位器C语言程序
- CCS FFT c语言算法
- 使用C语言编写的病房管理系统
- 通信过程中的RS编译码程序(c语言)
- 利用C++哈希表的方法实现电话号码查
- 计算机二级C语言上机填空,改错,编
- 用回溯法解决八皇后问题C语言实现
- 移木块游戏,可以自编自玩,vc6.0编写
- 简易教务管理系统c语言开发文档
- 操作系统课设 读写者问题 c语言实现
- 小波变换算法 c语言版
- C流程图生成器,用C语言代码 生成C语
- 3des加密算法C语言实现
- 简单的C语言点对点聊天程序
- 单片机c语言源程序(51定时器 八个按
- C++纯文字DOS超小RPG游戏
- 个人日常财务管理系统(C语言)
- c语言电子商务系统
- 小甲鱼C语言课件 源代码
- 将图片转换为C语言数组的程序
- C语言实现的一个内存泄漏检测程序
- DES加密算法C语言实现
- LINUX下命令行界面的C语言细胞游戏
- 用单片机控制蜂鸣器播放旋律程序(
评论
共有 条评论