下载后可任意编辑实验二图搜索技术一、 实验目的1.加深学生对图搜索技术的理解。2.掌握图搜索基本编程方法。3.能初步运用图搜索技术解决一些实际应用问题。二、 预习要求1.复习广度优先搜索算法。2.复习深度优先搜索算法。3.设计初步的搜索算法。三、 实验内容1.( 必做) 利用深度优先和广度优先搜索技术解决传道士和野人问题。修道士和野人问题如下: 有三个传教士和三个野人一起来到河边准备渡河, 河边有一下载后可任意编辑条空船, 且传教士和野人都会划船, 但每次最多可供两人乘渡。河的任何一岸以及船上一旦出现野人人数超过传教士人数, 野人就会把传教士吃掉。为完全地渡河, 传教士应如何规划渡河方案? 2.( 选做) 若传教士和野人的数目均为五人, 渡船至多可乘三人, 请定义一个启发函数, 并给出相应的搜索树。四、 实验要求: 1.程序运行时, 应能在屏幕上显示结果。2.界面直观、 友好。3.交实验报告。五、 实验结果: 实验截图: 下载后可任意编辑下载后可任意编辑实验代码: //yeren.cpp:Definestheentrypointfortheconsoleapplication.//#include"stdafx.h"#include#include#includetypedefstruct{intxds;//xiudaoshiintyr;//yerenintcw;//chuanwei}DataType;下载后可任意编辑DataTypefa[50000];typedefstructnode{DataTypedata;structnode*son;structnode*bro;structnode*par;structnode*next;}Ltable;voidLtableinit(Ltable**head)//初始化邻接表的操作{*head=(Ltable*)malloc(sizeof(Ltable));//动态分配空间(*head)->son=NULL;(*head)->bro=NULL;(*head)->par=NULL;(*head)->next=NULL;}voidinsertson(Ltable*head,DataTypex)//在邻接表中插入儿子结点的操作{Ltable*q,*s;q=(Ltable*)malloc(sizeof(Ltable));q->data=x;head->son=q;下载后可任意编辑s=head;while(s->next!=NULL)s=s->next;q->par=head;q->son=NULL;q->bro=NULL;s->next=q;q->next=NULL;}voidinsertbro(Ltable*head,DataTypex)//在邻接表中插入兄弟结点的操作, 所有的兄弟结点都指向她们右边的结点; {Ltable*q,*s;q=(Ltable*)malloc(sizeof(Ltable));s=head->son;q->data=x;while(s->bro!=NULL)s=s->bro;s->bro=q;s->next=q;q->next=NULL;q->bro=NULL;q->par=head;q->son=NULL;}intfindfa(DataTypex,intn)//下载后可任意编辑生成在船上修道士仍安全的几种情况; {inti=0,a,b,t=0;if(x.cw){a=0;b=n-a;while(a...