早教吧 育儿知识 作业答案 考试题库 百科 知识分享

农夫过河农夫要带狼、羊、草过河,但船每次只能容纳农夫和一样东西,如果农夫不在狼会吃羊,羊会吃草.求算法.

题目详情
农夫过河
农夫要带狼、羊、草过河,但船每次只能容纳农夫和一样东西,如果农夫不在狼会吃羊,羊会吃草.求算法.
▼优质解答
答案和解析
运行结果如下:
带羊到对岸
空手回本岸
带狼到对岸
带羊回本岸
带菜到对岸
空手回本岸
带羊到对岸
带羊到对岸
空手回本岸
带菜到对岸
带羊回本岸
带狼到对岸
空手回本岸
带羊到对岸
以上是找出的所有解,共有两个解.
程序如下:
#include
#include
#include
#define MAX_STEP 20
//index:0 - 狼,1-羊,2-菜,3-农夫,value:0-本岸,1-对岸
int a[MAX_STEP][4];
int b[MAX_STEP];
char *name[] =
{
"空手",
"带狼",
"带羊",
"带菜"
};
void search(int iStep)
{
int i;
if (a[iStep][0] + a[iStep][1] + a[iStep][2] + a[iStep][3] == 4)
{
for (i = 0; i < iStep; i++)
{
if (a[i][3] == 0)
{
printf("%s到对岸\n",name[b[i] + 1]);
}
else
{
printf("%s回本岸\n",name[b[i] + 1]);
}
}
printf("\n");
return;
}
for (i = 0; i < iStep; i++)
{
if (memcmp(a[i],a[iStep],sizeof(a[i])) == 0)
{
return;
}
}
if (a[iStep][1] != a[iStep][3] && (a[iStep][2] == a[iStep][1] || a[iStep][0] == a[iStep][1]))
{
return;
}
for (i = -1; i
看了 农夫过河农夫要带狼、羊、草过...的网友还看了以下:

用数学建模回答-------一个农夫带着一只狼,牵着一只羊,挑着一担菜去赶集.一个农夫带着一只狼,  2020-06-19 …

农夫有一袋米,一只鸡,一只狼;他一次只能带一样东西过河,如果他不在,鸡要啄米,狼要吃鸡,请问怎样才  2020-06-26 …

一农夫带了一只狗、一只兔子和一颗青菜,来到河边,他要把这三件东西带过河去,那仅有一只很小的旧船,农  2020-06-30 …

有一个农夫要赶往回家的路,必须要从一座桥上走过,但是农夫牵着一只羊,手里挎着一篮子草,后面还跟着一  2020-07-11 …

农夫,旦青菜,只羊,只狼,要过河,船只能载农夫和另一个,农夫要几次才能运完过河?有一农夫要过河,他  2020-07-13 …

农夫过河问题设有一个农夫带一只豺狗,一只羊和一筐菜来到河边,打算乘一只船从右岸渡到左岸去.该船的负  2020-07-30 …

一道数学逻辑题从前,一个农夫带了一条狗,一只兔子和一棵青菜来到河边,他要把这三件东西带过河去,那儿仅  2020-12-08 …

一个农夫带着一只狼、一只兔子、一颗白菜三样东西去集市上赶集,途中要过一条河,只有一艘小船可以过河,但  2020-12-29 …

农夫要将一只羊、一只狼、一筐白菜运到对岸.但渡船每次只能带一样上船,而农夫不在场,羊就要吃白菜,狼.  2021-01-12 …

一个农夫带着一只羊.一只狼和一棵白菜过桥.已知羊吃白菜.狼吃羊、每次过桥只能带一样,农夫要怎样安排才  2021-01-12 …