野人与修道士问题 这是一个古典的问题.假设有n个修道士和n个野人准备渡河,但只有一条能容纳c人的小船,为了防止野人侵犯修道士,要求无论在何处,修道士的个数不得少于野人的人数(除非修道士个数为0).如果两种人都会划船,试设计一个算法,确定他们能否渡过河去,若能,则给出一个小船来回次数最少的最佳方案. 要求: (1) 用一个三元组(x1,x2,x3)表示渡河过程中各个状态.其中,x1表示起始上岸修道士个数,x2表示起始岸上野人个数,x3表示小船位置(0-在目的岸,1-在起始岸).例如(2,1,1),表示起始岸有两个修道士,一个野人,小船在起始岸一边. 采用邻接表做为存储结构,将各种状态之间的迁移图保存下来. (2)采用广度搜索法,得到首先搜索到边数最少的一条通路. (3)输出数据 若问题有解(能渡过河去),则输出一个最佳方案.用三元组表示渡河过程中的状态,并用箭头指出这些状态之间的迁移: 目的状态<-...中间状态<-...初始状态. 若问题无解,则给出"渡河失败"的信息. (4)求出所有的解.