数据结构与算法经典程序:农夫过河问题讲解

首先,在这里祝各位看到这条博客的同学五一快乐呀,今天,我们讲解一个数据结构与算法中的经典题目(小程序),题目如下:

题目:
一个农夫在河边带了一只狼、一只羊和一颗白菜,他需要把这三样东西用船带到河的对岸。然而,这艘船只能容下农夫本人和另外一样东西。如果农夫不在场的话,狼会吃掉羊,羊也会吃掉白菜。请编程为农夫解决这个过河问题。
在这里插入图片描述

思路:

看到这道题目,我们先缕清这几样东西(包括一个人)他们之间的关系。在这道题里,咱们只能两两组合。其中,有几个限制条件
1.狼不能和羊在一起
2.羊不能和白菜在一起
(这两个条件也会成为我们之后算法里逻辑做限制的一部分)

命名相关变量
现在,我们对它们进行命名,我们先用数字表示这些东西(和人)
0——狼、1——羊、2——白菜、3——农夫
(记得一定是从0开始标记哦)

接下来,我们就是标记河的两岸,我们给河的两岸分别表示为东岸和西岸(当然北岸和南岸也行,随意啦)。以此证明他们到达,为了让咱们的计算机能够看懂,我们表示为
0——起始河岸
1——到达的河岸

如果狼到达了对岸,我们用数组就可以表示为a[Step][0] 1,其他同理。
(这里的

  • 2
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值