急求 c++编程问题

来源:百度知道 编辑:UC知道 时间:2024/05/24 13:50:09
一人带一只羊, 一框菜一只狼过河, 但船上除了载一人外, 最多每次只能再带一样东西。而当人不在场, 羊和菜在一起, 羊要吃菜, 狼和羊在一起, 狼会吃羊。怎样安排, 人才可以安全地把三样东西都运过河去。发到我的邮箱742058109@qq.com 非常感谢

逻辑推理出来过程很容易,但是怎么表示成语言编程,没那么容易!这个题我想过很久都没想出来

先把羊带过去,再把狼带过去,然后把羊带回来,再把菜带过去,最后把羊带过去,就OK了

这个怎么看怎么想那个塔的游戏,就是从上到下,从小到大,把他们从第一个柱子挪到第三个柱子上,顺序了变

//我们一次程设计大赛的题目
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_STEP 7

//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;
}