求程序代码,农夫、狼、羊和白菜过河问题.农夫、狼、羊和白菜过河问题.一个农夫带着一只狼,一只羊和一些菜过河,河边只有一条木船,由于船太小,只能装下农夫和他的一样东西,在无人看管
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/27 16:00:54
![求程序代码,农夫、狼、羊和白菜过河问题.农夫、狼、羊和白菜过河问题.一个农夫带着一只狼,一只羊和一些菜过河,河边只有一条木船,由于船太小,只能装下农夫和他的一样东西,在无人看管](/uploads/image/z/2715172-52-2.jpg?t=%E6%B1%82%E7%A8%8B%E5%BA%8F%E4%BB%A3%E7%A0%81%2C%E5%86%9C%E5%A4%AB%E3%80%81%E7%8B%BC%E3%80%81%E7%BE%8A%E5%92%8C%E7%99%BD%E8%8F%9C%E8%BF%87%E6%B2%B3%E9%97%AE%E9%A2%98.%E5%86%9C%E5%A4%AB%E3%80%81%E7%8B%BC%E3%80%81%E7%BE%8A%E5%92%8C%E7%99%BD%E8%8F%9C%E8%BF%87%E6%B2%B3%E9%97%AE%E9%A2%98.%E4%B8%80%E4%B8%AA%E5%86%9C%E5%A4%AB%E5%B8%A6%E7%9D%80%E4%B8%80%E5%8F%AA%E7%8B%BC%2C%E4%B8%80%E5%8F%AA%E7%BE%8A%E5%92%8C%E4%B8%80%E4%BA%9B%E8%8F%9C%E8%BF%87%E6%B2%B3%2C%E6%B2%B3%E8%BE%B9%E5%8F%AA%E6%9C%89%E4%B8%80%E6%9D%A1%E6%9C%A8%E8%88%B9%2C%E7%94%B1%E4%BA%8E%E8%88%B9%E5%A4%AA%E5%B0%8F%2C%E5%8F%AA%E8%83%BD%E8%A3%85%E4%B8%8B%E5%86%9C%E5%A4%AB%E5%92%8C%E4%BB%96%E7%9A%84%E4%B8%80%E6%A0%B7%E4%B8%9C%E8%A5%BF%2C%E5%9C%A8%E6%97%A0%E4%BA%BA%E7%9C%8B%E7%AE%A1)
求程序代码,农夫、狼、羊和白菜过河问题.农夫、狼、羊和白菜过河问题.一个农夫带着一只狼,一只羊和一些菜过河,河边只有一条木船,由于船太小,只能装下农夫和他的一样东西,在无人看管
求程序代码,农夫、狼、羊和白菜过河问题.
农夫、狼、羊和白菜过河问题.一个农夫带着一只狼,一只羊和一些菜过河,河边只有一条木船,由于船太小,只能装下农夫和他的一样东西,在无人看管的情况下.狼要吃羊,羊要吃菜,请问农夫如何菜能使三样东西平安过河?
程序设计课要求写出其程序代码?
求程序代码,农夫、狼、羊和白菜过河问题.农夫、狼、羊和白菜过河问题.一个农夫带着一只狼,一只羊和一些菜过河,河边只有一条木船,由于船太小,只能装下农夫和他的一样东西,在无人看管
#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;
}
结果:
带羊到对岸
空手回本岸
带狼到对岸
带羊回本岸
带菜到对岸
空手回本岸
带羊到对岸
带羊到对岸
空手回本岸
带菜到对岸
带羊回本岸
带狼到对岸
空手回本岸
带羊到对岸
Press any key to continue
加我的qq号 476758573
我帮你详细解释再给你流程图啊
虽然时间过了 但希望有用啊
另外,站长团上有产品团购,便宜有保证