农夫过河问题(c++编写).docVIP

  • 27
  • 0
  • 约3.25千字
  • 约 4页
  • 2019-07-01 发布于江西
  • 举报
1、问题描述 从前,一个农夫带着一只狼,一只羊和一棵白菜要河(注意该狼被农夫训服了,但还会吃羊)。他要将所有东西安全的带到河的对岸,不幸的是河边只有一条船,只能装下农夫和他的一样东西,并且农夫必须每次都随船过,因为只有他能撑船。在无人看管的情况下,狼要吃羊,羊要吃白菜,因此,农夫不能在河的某边岸上单独留下狼和羊,也不能单独留下羊和白菜。那么农夫如何才能使三样东西平安过河呢? 2、需求分析 1)、农夫必须把狼,羊,白菜全部都载过河,且一次只能载一个; 2)、要求狼和羊不能单独在一起,羊和白菜也不能单独在一起,即要么羊单独在河的一边,要么羊和农夫在一起。 3、系统概述设计 对于上述情况,可以将河的两岸抽象成成数学问题,即将河的本岸抽象成数字‘0’,将对岸抽象成‘1’;且将狼,羊,白菜,农夫,分别抽象成数字‘0’,‘1’,‘2’,‘3’。而用数组a[i][j](取值只能为0和1)表示第i次运载是,j(j=0,1,2,3。分别表示狼,羊,白菜,农夫)所在的位置。而用b[i]表示第i次运载时船上运载的东西(因为农夫每次都必须在船上,所以不用记录,除非穿上只有农夫一人)。 如此一来,是否全部过河的问题就转化为判断a[i][0],a[i][1],a[i][2],a[i][3]是否全为1了,即相加之和是否为4的问题了;而四者中的两者是否能在一起的问题就转化它们各自的a[i][j]是否相

文档评论(0)

1亿VIP精品文档

相关文档