java农夫过河_【跟耿老师学Java】农夫过河问题

原标题:【跟耿老师学Java】农夫过河问题

农夫过河问题

耿祥义

通过大家熟悉的农夫过河问题,训练怎样用面向对象的方法解决问题,同时学习怎样使用队列来完成存储数据和处理数据(只在线性表的两端处理数据)。

代码链接

(或单击阅读原文):

https://pan.baidu.com/s/1uISU4P8Bq1rdLhQbXU5mPw

提取码: x4in

1.农夫过河问题

农夫携带狼、羊、菜从河东岸河到西岸,桥上限制农夫每次至多只能携带狼、羊、菜中的一种。另外,如果没有农夫看着,羊会吃菜,狼会吃羊,但狼不吃菜。

2. 农夫的过河办法之一

(1)农夫带羊过河(从东岸到西岸)。

(2)农夫返回(从西岸返回东岸)。

(3)农夫带狼过河(从东岸到西岸)。

(4)农夫带羊返回(从西岸到东岸)。

(5)农夫带菜过河(从东岸到西岸)。

(6)农夫返回(从西岸返回东岸)。

(7)农夫带羊过河(从东岸到西岸)。

3.用面向对象程序的设计办法过河

(1)农夫对象负责维护东岸和西岸的数据(作为农夫对象的数据)

(2)农夫每次从东岸到西岸时(对象执行方法),要保证东岸剩余的数据符合要求

(3)农夫每次从西岸到东岸时(对象执行方法),要保证西岸剩余的数据符合要求

(4)农夫发现东岸没有数据后,就不再从东岸到西岸。

4.具体数据

我们用两个链表作为农夫对象所维护的东岸和西岸。用数字1代表菜,2代表羊,3代表狼。将数字1,2,3存入刻画东岸的链表中。当农夫运送数据从东岸到西岸时(删除东岸链表的头节点)&

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值