人工智能实验报告 牧师与野人渡河 知识表示方法

牧师与野人渡河问题

编译环境

Dev C++ 5.6.1

windows 10

实验要求

人工智能实验报告 牧师与野人渡河 知识表示方法_第1张图片

实验代码

#include
#include
#include
#include
#include
using namespace std;
int n,c;//人数,船容量

/*
**初始化函数
**初始化人数和船容量 
*/ 
void init0()
{
	printf("Please input the number of people (n):____\b\b\b");
	scanf("%d",&n);
	printf("Please input the number of boats  (c):____\b\b\b");
	scanf("%d",&c);
}

/*
**状态节点 
*/ 
typedef struct NODE
{
	int mushiNum;
	int yerenNum;
	bool isStartPosition;
	int step;
	int father;
//	NODE();
//	NODE(int m,int y,bool i,int s,int f):mushiNum(m),yerenNum(y),isStartPosition(i),step(s),father(f){}
}node;

/*
**为状态节点赋值
*/ 
void setData(node &a,int m,int y,bool i,int s,int f)
{
	a.mushiNum=m;
	a.yerenNum=y;
	a.isStartPosition=i;
	a.step=s;
	a.father=f; 
}

/*
** 打印状态节点 
*/ 
void printData(node &a)
{
	printf("(%2d,%2d,%2d)",a.mushiNum,a.yerenNum,a.isStartPosition);
}

/*
**判断是否人数合法 
*/
bool isNumValid(int m,int y) 
{
	if(m+y>c||m+y==0)
	{
		return false;
	}
	if(m>0)
	{
		if(m0)
	{
		if(m0)
		{
			res[cur++]=k;
			k=que[k].father;
		}
		printf("\nThe cross way is:\n****");
		printData(que[0]);
		int hang=1;
		for(int i=resSize-1;i>=0;i--)
		{
			if(hang%5==0)
			{
				hang=1;
				printf("\n");
			}
			printf(" -> ");
			printData(que[res[i]]);
			hang++;
		} 
		printf("\n\n%d steps can cross the river !\n",resSize);
		printf("Seccess !\n");
		free(res);
	}
	else
	{
		printf("imposible\n");
	}
}
int main()
{
	init0();
	solution();
	return 0;
}

运行截图

人工智能实验报告 牧师与野人渡河 知识表示方法_第2张图片

你可能感兴趣的:(同学问的题目,牧师与野人渡河问题,知识表示方法,人工智能实验报告,状态空间表示法)