永发信息网

C语言出错农夫过河

答案:2  悬赏:20  手机版
解决时间 2021-03-18 13:24
  • 提问者网友:且恨且铭记
  • 2021-03-18 01:59
C语言出错农夫过河

#include
#include
#include
#define N 15
int a[N][4];
int b[N];
char *name[]=
{
" ",
"and wolf",
"and goat",
"and cabbage"
};
void search(int step)
{
int i;
if(a[step][0]+a[step][1]+a[step][2]+a[step][3]==4)
{
for(i=0;i{
printf("east: ");
if(a[i][0]==0)
printf("wolf ");
if(a[i][1]==0)
printf("goat ");
if(a[i][2]==0)
printf("cabbage ");
if(a[i][3]==0)
printf("farmer ");
if(a[i][0]&&a[i][1]&&a[i][2]&&a[i][3])
printf("none");
printf(" ");
printf("west: ");
if(a[i][0]==1)
printf("wolf ");

if(a[i][1]==1)
printf("goat ");

if(a[i][2]==1)
printf("cabbage ");

if(a[i][3]==1)
printf("farmer ");

if(!(a[i][0]||a[i][1]||a[i][2]||a[i][3]))
printf("none");
printf("\n\n\n");
if(iprintf(" the %d time\n",i+1);
if(i>0&&i{
if(a[i][3]==0)
{
printf(" ----------> farmer ");
printf("%s\n",name[b[i]+1]);
}
else
{
printf(" printf("%s\n",name[b[i]+1]);
}
}
}
printf("\n\n\n\n");
return;
}
for(i=0;i{
if(memcmp(a[i],a[step],16)==0)
{
return;
}
}
if(a[step][1]!=a[step][3]&&(a[step][2]==a[step][1]||a[step][0]==a[step][1]))
{
return;
}
for(i=-1;i{
b[step]=i;
memcpy(a[step+1],a[step],16);
a[step+1][3]=1-a[step+1][3];
if(i==-1)
{
search(step+1);
}
else
if(a[step][i]==a[step][3])
{
a[step+1][i]==a[step+1][3];
search(step+1);
}
}
}
int main()
{
printf("\n\n 农夫过河问题,解决方案如下:\n\n\n");
search(0);
return 0;
}
































最佳答案
  • 五星知识达人网友:独行浪子会拥风
  • 2021-03-18 02:40
找到最后,其实只是一个很小的问题。
search函数最后一个if
if(a[step][i]==a[step][3])
{
a[step+1][i]=a[step+1][3];//这里应该是=,你写成==了。 
search(step+1);
}
全部回答
  • 1楼网友:山君与见山
  • 2021-03-18 03:04
解法如下:
1.农夫带羊过去,自己回来
2.农夫带狼过去,带羊回来
3.农夫带白菜过去,自己回来
4.农夫带羊过去
全部安全过岸.

程序暂时没有时间做
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯