用c语言编程野人与传教士过河问题,野人和传教士过河问题的C语言源代码

2008-11-14 17:40

问题:有3个传教士和3个野人要过河,只有一艘船,这艘船每次只能载2个人过河,且无论哪边野人的数量大于传教士的数量时,野人就会吃掉传教士。怎样让他们都安全过河?

C语言源代码:

#include

#include

#define STEP_MAX 20 //来回过河的次数

#define KIND_NUM 3 //每个种类的数量

#define BOAT_NUM 2 //船的载重量

typedef enum

{

BOAT_THIS,//船在本岸

BOAT_THAT,//船在对岸

} boat_t;

typedef enum

{

ROAD_GO,//过河

ROAD_COME,//回来

} road_t;

typedef struct

{

int ye;//对岸野人数量

int man;//对岸传教士数量

boat_t boat;//船是否在对岸

} state_t;//一种局面

typedef struct

{

int ye;//野人过河数量

int man;//传教士过河的数量

road_t road;//回来或过河

} step_t;//一个步骤

state_t states[STEP_MAX]={0};

step_t steps[STEP_MAX]={0};

//判断所有的野人和传教士是否都到了对岸

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值