- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
c语言实现八数码问题
八数码问题源程序及注释:
#includestdio.h
#includeconio.h
int n,m;
typedef struct Node
{
char matrix[10];/*存储矩阵*/
char operate;/*存储不可以进行的操作,L代表不能左移R代表不能右移U代表不能上移D代表不能下移*/
char extend;/*是否可以扩展,Y代表可以,N代表不可以*/
int father;/*指向产生自身的父结点*/
}Node;
char start[10]=};/*此处没有必要初始化*/
char end[10]={1238 4765};/*此处没有必要初始化*/
Node base[4000];
int result[100];/*存放结果的base数组下标号,逆序存放*/
int match()/*判断是否为目标*/
{
int i;
for(i=0;i9;i++)
{
if(base[n-1].matrix[i]!=end[i])
{
return 0;
}
}
return 1;
}
void show()/*显示矩阵的内容*/
{
int i=1;
while(m=0)
{
int mm=result[m];
//clrscr();
printf(\n\n\n 状态方格\t\t步骤 %d,i);
printf(\n\n\n\n\n\t\t\t%c\t%c\t%c\n,base[mm].matrix[0],base[mm].matrix[1],base[mm].matrix[2]);
printf(\n\n\t\t\t%c\t%c\t%c\n,base[mm].matrix[3],base[mm].matrix[4],base[mm].matrix[5]);
printf(\n\n\t\t\t%c\t%c\t%c\n,base[mm].matrix[6],base[mm].matrix[7],base[mm].matrix[8]);
//sleep(1);
m--;
i++;
}
}
void leave()/*推理成功后退出程序之前要执行的函数,主要作用是输出结果*/
{
n--;
while(base[n].father!=-1)
{
result[m]=n;
m++;
n=base[n].father;
}
result[m]=0;
result[m+1]=\0;
show();
//clrscr();
printf(\n\n\n\n\n\n\n\n\n\t\t\t\t搜索结束\n\n\n\n\n\n\n\n\n\n);
getch();
//exit(0);
}
int left(int x)/*把下标为X的数组中的矩阵的空格左移*/
{
int i,j;
char ch;
for(i=0;i9;i++)
{
if(base[x].matrix[i]== )
break;
}
if(i==0||i==3||i==6||i==9)
{
return 0;
}
for(j=0;j9;j++)
{
base[n].matrix[j]=base[x].matrix[j];
}
ch=base[n].matrix[i-1];
base[n].matrix[i-1]=base[n].matrix[i];
base[n].matrix[i]=ch;
base[n].operate=R;
base[n].extend=Y;
base[n].father=x;
base[x].extend=N;
n++;
if(match(i))
leave();
return 1;
}
int right(int x)/*把下标为X的数组中的矩阵的空格右移*/
{
int i,j;
char ch;
for(i=0;i9;i++)
{
if(base[x].matrix[i]== )
break;
}
if(i==2||i==5||i==8||i==9)
{
return 0;
}
for(j=0;j9;j++)
{
base[n].matrix[j]=base[x].matrix[j];
}
ch=base[n].matrix[i+1];
base[n].matrix[i+1]=base[n].matrix[i];
base[n].matrix[i]=ch;
base[n].operate=L;
base[n].extend=Y;
base[n].father=x;
base[x].extend=N;
n++;
if(match(i))
您可能关注的文档
- CPU总结.doc
- CPU工作原理知识.doc
- cpu工作原理浅析.doc
- CPU是Central Processing Unit.doc
- CPU德州仪器.doc
- CPU技术.doc
- CPU核心介绍.doc
- CPU百科知识大全.doc
- CPU的一些基础知识及其参数.doc
- CPU的主要技术特征.doc
- 山区高中生物校本课程资源开发的实践与探索:理论、案例与展望.docx
- 山地型景区旅游环境的利益主体博弈与协同治理.docx
- 山地城市轨道站点吸引范围:基于多因素的深度剖析与模型构建.docx
- 山苍子扦插繁殖技术优化与生根机理深度解析.docx
- 井巷工程爆破基础知识培训课件.pptx
- 山西煤炭上市公司成长性剖析:基于多维视角与发展策略.docx
- 岩垂草:重庆南川石漠化地区生态修复的绿色希望——以南平镇为样本的效益探究.docx
- 井巷掘进与支护课件.pptx
- 贵州省欣紫鸿药用辅料有限公司年产5000吨小分子药辅材料及高分子材料生产线扩建项目环评报告.pdf
- 贵州省遵义县三岔镇茅盖山铝土矿(变更)环境影响报告书.pdf
文档评论(0)