- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
人工智能二_野人过河问题_实验3解析
实 验 报 告
课程名称 人工智能_____________
实验项目 野人过河问题_______________
实验仪器 电脑 、visual C++_________
系 别 计算机学院____________
专 业 __计算机科学与技术_____
班级/学号
学生姓名 _ __
实验日期 2010年 月 日_______
成 绩 _______________________
指导教师
实验目的
理解并熟悉掌握深度优先搜索和广度优先搜索地方法。
实验内容
题目:设有3个传教士和3个野人来到河边,打算乘一只船从右岸到左岸去。 该船的负载能力为两人。在任何时候,如果野人人数超过传教士人数,野人 就会把传教士吃掉。他们怎样才能用这条船安全的把所有人都渡过河去?
三、代码和结果
#include stdio.h
#include stdlib.h
#include ctype.h
#define maxloop 100 /* 最大层数,对于不同的扩展方法自动调整取值 */
#define pristnum 3 /*初始化时设定有3个野人3个传教士,实际可以改动*/
#define slavenum 3
struct SPQ{ int sr,pr; /* 船运行一个来回后河右岸的野人、传教士的人数 */
int sl,pl; /* 船运行一个来回后河左岸的野人、传教士的人数 */
int ssr,spr; /* 回来(由左向右时)船上的人数 */
int sst,spt; /* 去时(由右向左时)船上的人数 */
int loop; /* 本结点所在的层数 */
struct SPQ *upnode ,*nextnode;/* 本结点的父结点和同层的下一个结点的地址 */
}spq;
int loopnum;/* 记录总的扩展次数 */
int openednum;/* 记录已扩展节点个数 */
int unopenednum;/* 记录待扩展节点个数 */
int resultnum;
struct SPQ *opened;
struct SPQ *oend;
struct SPQ *unopened;
struct SPQ *uend;
struct SPQ *result;
void initiate();
void releasemem();
void showresult();
void addtoopened(struct SPQ *ntx);
int search();
void goon();
int stretch(struct SPQ* ntx);
void recorder();
int main()
{
int flag; /* 标记扩展是否成功 */
for( ; ; )
{
initiate();
flag = search ();
if(flag == 1)
{
recorder();
releasemem();
showresult();
goon();
}
else
{
printf(无法找到符合条件的解);
releasemem();
goon();
}
}
system(pause);
return 0;
}
void initiate()
{
int x;
char choice;
uend = unopened = (struct SPQ*)malloc(sizeof(spq));
if(uend==NULL)
{
printf(\n内存不够!\n);
exit(0);
}
unopenednum=1;
openednum=0;
unopened - upnod
文档评论(0)