农夫过河
代码说明:
农夫过河问题 用四位二进制数分别顺序表示农夫、狼、白菜和羊的状态 ,即:{dddd} {Farmer, Wolf, Cabbage, Goat} 其中:d={0,1} ,0表示在东岸 1表示在西岸,初始状态为0000,终止状态为1111 ,采用广度优先搜索方法,并使用按位异或的运算符。 step.1 初始化(1)设立route[16]来记录已经考虑过的状态。state来记录当前时刻的状态(状态编号的二进制形式即状态本身)aftercross来记录渔夫当前的选择(渡河对象)会导致的结果状态,passenger作为临时变量,用于表达农夫的选择(对应二进制位为1表示选中该乘客),results[16]={0}用于输出结果(2) 创建“状态”队列 enqueue(states_que,0x00); 且初始状态0000入队(3)创建函数int is_safe(int state),用于判断状态是否安全 不安全时(即羊菜同岸且农夫不在场,狼羊同岸且农夫不在场时),返回0; 安全时,返回1; step.2(1)使用for循环依次考虑农夫可能的选择:携带羊、白菜和狼,以及农夫只身渡河的情况 for( passenger = 1; passenger
下载说明:请别用迅雷下载,失败请重下,重下不扣分!