人工智能-与或图搜索解决梵塔-代码C语言版.docx

上传人:scccc 文档编号:13655467 上传时间:2022-01-21 格式:DOCX 页数:9 大小:121.43KB
返回 下载 相关 举报
人工智能-与或图搜索解决梵塔-代码C语言版.docx_第1页
第1页 / 共9页
人工智能-与或图搜索解决梵塔-代码C语言版.docx_第2页
第2页 / 共9页
人工智能-与或图搜索解决梵塔-代码C语言版.docx_第3页
第3页 / 共9页
人工智能-与或图搜索解决梵塔-代码C语言版.docx_第4页
第4页 / 共9页
人工智能-与或图搜索解决梵塔-代码C语言版.docx_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《人工智能-与或图搜索解决梵塔-代码C语言版.docx》由会员分享,可在线阅读,更多相关《人工智能-与或图搜索解决梵塔-代码C语言版.docx(9页珍藏版)》请在三一文库上搜索。

1、与或图搜索解决梵塔#include stda仅.h#define STACKs 100#define STACKsr 10#include malloc.htypedef struct Openint n;要移动的盘数int start;/ 开始杆号int middle;/过度杆号int end;/ 目标杆号int son;/子问题解决个数,0都未解决,3都解决Open* father;/ 父节点OPen,*OPEN;定义栈typedef structOPEN *base;/ 在栈构造之前和销毁之后,base的值为NULL;OPEN *top;/ 栈顶指针int stacksize;/当前已分

2、配的存储空间,以 Open结构体地址为单位。SqStack;/s.base=(OPEN*)malloc(STACKs*sizeof(OPEN);栈中存放 OPEN 指针if(!s.base)return 0;s.top=s.base;s.stacksize=STACKs;return 1;/InitStack*/int GetTop(SqStack s,OPEN &e)/返回当前问题的指针,指向 OPen结构体if(s.top=s.base)return 0;e=*(s.top-1);return 1;int Push(SqStack &s,OPEN e)/将扩展结点添加到 open表中(即栈

3、)if(s.top-s.base=s.stacksize)/ 如果当前栈已满,扩展栈容量s.base=(OPEN*)realloc(s.base,(STACKs+STACKsr)*sizeof(OPEN);if(!s.base)return 0;s.top=s.base+s.stacksize;s.stacksize+=STACKsr;*s.top+=e;return 1;/Push int Pop(SqStack &s,OPEN &e)/ 从 open 表头部删除该节点if(s.top=s.base)return 0;e=*-s.top;return 1;/Popint main()int

4、n,k,m,z;/int i=0;/声明问题解决步骤printf(请输入盘的个数:);scanf(%d,&n);printf(请输入开始杆号:);scanf(%d,&k);printf(请输入目标杆号:);scanf(%d,&m);printf(请输入中间杆号:);scanf(%d,&z);OPEN q,p,r;SqStack S;InitStack(S);q=(OPEN)malloc(sizeof(OPen);q-son=0;q-n=n;q-end=m;q-start=k;q-father=NULL;q-middle=z;Push(S,q);doGetTop(S,p);if(p-n=1)终点

5、问题的解(只移动一个盘子)i+;if(p-father)(p-father-son)+;printf(第-5 步:杆 to 杆 dn,i,p-start,p-end);Pop(S,p);if(GetTop(S,p)if(p-son=3)/所有子问题都解决了,父节点标记加1 ,删除该节点if(p-father)(p-father-son)+;Pop(S,r);)if(GetTop(S,p)if(p-sonn1)将问题等价分解成更易解决的子问题/扩展未解决节点,扩展成如下3个子节点r=NULL;r=(OPEN)malloc(sizeof(OPen);r-son=0;r-father=p;r-n=p

6、-n-1;r-start=p-middle;r-end=p-end;r-middle=p-start;Push(S,r);r=(OPEN)malloc(sizeof(OPen);r-son=0;r-father=p;r-n=1;r-start=p-start;r-end=p-end;r-middle=p-middle;Push(S,r);r=(OPEN)malloc(sizeof(OPen);r-son=0;r-father=p;r-start=p-start;r-end=p-middle;r-middle=p-end;r-n=p-n-1;Push(S,r);while(S.top!=S.base);/ 当 open 表空时,结束 return 0;测试结果:口 :亨可资bq 1 2A 工专福实班 .rgyL hj D ebu gYg/uhuQjewet niye杆mr-ont盅开目中戈an人入JAJA-4清清清里PV1学习诩wqiz人工曹晶实豁9*hucA 口号匕际芍*1府。右双._史THANKS !致力为企业和个人提供合同协议, 策划案计划书,学习课件等等打造全网一站式需求欢迎您的下载,资料仅供参考

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1