人狼羊菜的编程实现
作为经典的智力问题,人狼羊菜问题的编程实现并不复杂,只要将人狼羊菜从高位到低位根据存在与否设置成0、1变量,引入可行变量与运载变量,通过穷举查找匹配得出可行的方案,直到所有变量全部转移到一边岸上即可。
代码如下:
#include<iostream>
#include<bitset>
usingnamespace std;
//人狼洋菜问题,二进制从高位到低位对应【人狼羊菜】
inttrans[4]={12,10,9,8};//运载变量
intpsb[10]={15,14,13,11,10,0,1,2,4,5};//可取状态
intbank_l=15;//左岸
intbank_r=0;//右岸
booltrans_ok(bool flag,int tran)
{//可否运输
if(flag)
return((~bank_l)&(tran))!=0?false:true;
else
return((~bank_r)&(tran))!=0?false:true;
}
boo