回 帖 发 新 帖 刷新版面

主题:农夫过河的答案!

农夫过河。一个农夫带着一只狼,一只羊和一些菜过河。河边只有一条一船,由
于船太小,只能装下农夫和他的一样东西。在无人看管的情况下,狼要吃羊,羊
要吃菜,请问农夫如何才能使三样东西平安过河。
C++  
  

回复列表 (共21个回复)

11 楼

请问楼主:这个程序怎么在TC3.0里运行呢?需要改什么东西?出现的错误提示是:error directive:must  use  c++  for  the  type
可是我没有vc,望哪位大人指点,多谢!

12 楼

请问楼主:这个程序怎么在TC3.0里运行呢?需要改什么东西?出现的错误提示是:error directive:must  use  c++  for  the  type
可是我没有vc,望哪位大人指点,多谢!

13 楼

请问楼主:这个程序怎么在TC3.0里运行呢?需要改什么东西?出现的错误提示是:error directive:must  use  c++  for  the  type
可是我没有vc,望哪位大人指点,多谢!

14 楼

请问楼主:这个程序怎么在TC3.0里运行呢?需要改什么东西?出现的错误提示是:error directive:must  use  c++  for  the  type
可是我没有vc,望哪位大人指点,多谢!

15 楼

程序:

#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 楼

[em12]楼上的哥哥:
      感谢你的农夫过河的程序,不过我看不很懂,你能不能把注释加在每一行的后面啊?
  我急需你的帮助啊!!!万分感谢哦!![em1]

17 楼

楼主JJ能解释下算法的最基本的原理吗,虽然知道是用图形来解决,不过偶比较笨笨的说....

18 楼

看来一下有点了解了,还是基本功不扎实,谢谢楼主JJ

19 楼

是我!!看到没 ?

20 楼

帮帮我呀,老大!!

我来回复

您尚未登录,请登录后再回复。点此登录或注册