河的左岸有3个野人和3个修道士以及一条小船,修道士们想用这条小船把所有的人都运到河的右岸,但又受到以下限制:
1、修道士和野人都会划船,但船一次只能载2人;
2、在任何岸边,野人数不能超过修道士数,否则修道士将会被野人吃掉。
假定野人愿意服从任何一种过河的安排,请规划出一种确保修道士安全的过河方案。以下是犯规情形:
- 例如,对面有1个坏,船上有1好1坏,则船到对面后1好2坏,犯规。
#include <stdio.h>
struct record
{
int a,b,c,d;
};
record history[1000];
int count = 0;
// 保存记录
void Push(int a, int b, int c, int d)
{
record* r = &history[count];
r->a = a;
r->b = b;
r->c = c;
r->d = d;
count ++;
}
// 追溯
void Pop()
{
count --;
}
// 压入一个相对值,表示每次运人的数目
//(2,0)(0,2)(1,1)(1,0),(0,1)
//(-2&#