主题:农夫过河的答案!
不游泳的鱼
[专家分:620] 发布于 2004-05-05 10:46:00
农夫过河。一个农夫带着一只狼,一只羊和一些菜过河。河边只有一条一船,由
于船太小,只能装下农夫和他的一样东西。在无人看管的情况下,狼要吃羊,羊
要吃菜,请问农夫如何才能使三样东西平安过河。
C++
回复列表 (共21个回复)
11 楼
xylan [专家分:0] 发布于 2004-10-28 21:12:00
请问楼主:这个程序怎么在TC3.0里运行呢?需要改什么东西?出现的错误提示是:error directive:must use c++ for the type
可是我没有vc,望哪位大人指点,多谢!
12 楼
xylan [专家分:0] 发布于 2004-10-28 21:14:00
请问楼主:这个程序怎么在TC3.0里运行呢?需要改什么东西?出现的错误提示是:error directive:must use c++ for the type
可是我没有vc,望哪位大人指点,多谢!
13 楼
xylan [专家分:0] 发布于 2004-10-28 21:19:00
请问楼主:这个程序怎么在TC3.0里运行呢?需要改什么东西?出现的错误提示是:error directive:must use c++ for the type
可是我没有vc,望哪位大人指点,多谢!
14 楼
xylan [专家分:0] 发布于 2004-10-28 21:24:00
请问楼主:这个程序怎么在TC3.0里运行呢?需要改什么东西?出现的错误提示是:error directive:must use c++ for the type
可是我没有vc,望哪位大人指点,多谢!
15 楼
hao761223 [专家分:100] 发布于 2004-10-28 23:43:00
程序:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#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 <= 2; i++)
{
b[iStep] = i;
memcpy(a[iStep + 1], a[iStep], sizeof(a[iStep + 1]));
a[iStep + 1][3] = 1 - a[iStep + 1][3];
if (i == -1)
{
search(iStep + 1);
}
else if (a[iStep][i] == a[iStep][3])
{
a[iStep + 1][i] = a[iStep + 1][3];
search(iStep + 1);
}
}
}
int main()
{
search(0);
return 0;
}
运行结果:
带羊到对岸
空手回本岸
带狼到对岸
带羊回本岸
带菜到对岸
空手回本岸
带羊到对岸
带羊到对岸
空手回本岸
带菜到对岸
带羊回本岸
带狼到对岸
空手回本岸
带羊到对岸
16 楼
LYLyanli [专家分:60] 发布于 2004-12-28 10:57:00
[em12]楼上的哥哥:
感谢你的农夫过河的程序,不过我看不很懂,你能不能把注释加在每一行的后面啊?
我急需你的帮助啊!!!万分感谢哦!![em1]
17 楼
yfboy [专家分:10] 发布于 2004-12-28 11:12:00
楼主JJ能解释下算法的最基本的原理吗,虽然知道是用图形来解决,不过偶比较笨笨的说....
18 楼
yfboy [专家分:10] 发布于 2004-12-28 11:44:00
看来一下有点了解了,还是基本功不扎实,谢谢楼主JJ
19 楼
LYLyanli [专家分:60] 发布于 2004-12-29 10:23:00
是我!!看到没 ?
20 楼
dayfeiny [专家分:0] 发布于 2005-03-27 16:10:00
帮帮我呀,老大!!
我来回复