设有m个野人,n个修道士,(m≤n)船上可坐c个人。
1. c=1,无解;
2. c=2,对较小的M,N有解,对于较大的M,N无解,比如m=n=4,c=2无解;
3. c=3,情况同上;
4. c>3,分情况讨论如下:
(1) m=n,
此时可以按照下面的方案设计(下面S表示野人savage,R表示修道士religious, B表示船boat, ||表示河)
方案一:
m S || (m-c)S || cS (m-c+1) S || (c-1) S (m-c+1)S || (c-1)S (m-c+2)S || (c-2)S
m R || => m R || => m R || => (m-c+1)R || (c-1)R => (m-c+2)R || (c-2)R
B || || B B || || B B ||
于是又回到了开始时候的情况,两岸的S,R相等且船在左岸,已经有c-2个S和c-2个R过了河。依次做下去,最终所有的人都会过河;
还有一种方案:
方案二:
mS || (m-[c/2])S || [c/2]S (m-[c/2]+1)S || ([c/2]-1)S
mR || =>