古代谜题

hechengli310 2011-04-27 11:18:33
一个农夫带着一只狼、一只羊和一棵白菜来到河边。他需要把它们用船带到河对岸。然而,这艘船只只能容下农夫本人和另外一样东西(要么是狼,要么是羊,要么是白菜)。如果农夫不在场的话,狼就会吃掉羊,羊也会吃掉白菜。请为农夫解决这个问题,或者证明它无解。请高手帮忙~~~~~~~~
...全文
295 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengnenglu 2011-12-06
  • 打赏
  • 举报
回复
开裆裤的时候的问题。擦擦
liangtu 2011-12-06
  • 打赏
  • 举报
回复
给分吧!
hechengli310 2011-05-19
  • 打赏
  • 举报
回复
怎么我调试的时候总是有个错误说有个地址不能read?
hechengli310 2011-05-12
  • 打赏
  • 举报
回复
感谢了!
hechengli310 2011-04-30
  • 打赏
  • 举报
回复
能不能提供具体的算法。
zhl3866692 2011-04-30
  • 打赏
  • 举报
回复
#include "stdio.h"
#include "stdlib.h"
void farmerproblem();
#define MAXQSIZE 100
typedef int ElemType;
typedef struct {
ElemType data[MAXQSIZE];
int front,rear;
}SqQueue;
void Init_SqQueue(SqQueue*Q)
{
Q->front=Q->rear=0;
}
int Empty_SqQueue(SqQueue*Q)
{
return(Q->rear=Q->front);
}
void In_SqQueue(SqQueue *Q,int e)
{
if(Q->rear==MAXQSIZE) return;
Q->data[Q->rear]=e;
Q->rear+=1;
}
void Out_SqQueue(SqQueue *Q,int *e)
{
if(Q->rear==Q->front) return;
*e=Q->data[Q->front];
Q->front+=1;
}
int farmer(int location)
{
return(0!=(location & 0x08));
}
int wolf(int location)
{
return(0!=(location & 0x04));
}
int cabbage(int location)
{
return(0!=(location & 0x02));
}
int goat(int location)
{
return(0!=(location & 0x01));
}
int safe(int location)
{
if(goat(location)==cabbage(location)&&goat(location)!=farmer(location)) return(0);
if(goat(location)==wolf(location)&&goat(location)!=farmer(location)) return(0);
return(1);
}
main()
{
farmerproblem();
getchar();
}
void farmerproblem()
{
int movers,location,newlocation;
int route[16];/*记录已考虑的状态路径*/
int i;
SqQueue moveto;
/*准备初始值*/
Init_SqQueue(&moveto);
In_SqQueue(&moveto,0x00);
for(i=0;i<16;i++) route[i]=-1;
route[0]=0;
/*开始移动*/
while(!Empty_SqQueue(&moveto)&&(route[15]==-1))
/*得到现在的状态*/
{
Out_SqQueue(&moveto,&location);
for(movers=1;movers<=8;movers<<=1)/*农夫总是在移动,随农夫的移动的也只能是农夫同侧的东西*/
{
if(((location & 0x08)!=0)==((location & movers)!=0))
{
newlocation=location^(0x08|movers);
if(safe(newlocation)&&(route[newlocation]==-1))
{
route[newlocation]=location;
In_SqQueue(&moveto,newlocation);
}
}
}
}
if(route[15]!=-1)
{
printf("\n the reverse path is:");
for(i=15;i>=0;i=route[i])
{
printf("\n the location is:%d",i);
if(i==0) break;
}
}
else printf("no path");
}

这是用数据结构做的我从书上拷下来的 看对你有什么帮助没

从初始状态(0000)到结束状态(1111)的动作
规定在南岸用0表示 在北岸用1表示
都在南岸的时候0(0000);
农夫把羊带到北岸:9(1001);
农夫独自回到南岸;1(0001);
农夫把白菜带到北岸:11(1011);
农夫把羊带回南岸:2(0010);
农夫把狼带到北岸:14(1110);
农夫独自回到南岸:6(0110);
农夫把羊带到北岸:15(1111);

农夫把羊带到北岸:9(1001);
农夫独自回到南岸;1(0001);
农夫把狼带到北岸:13(1101);
农夫把羊带回南岸:4(0100);
农夫把白菜带到北岸:14(1110);
农夫独自回到南岸:6(0110);
农夫把羊带到北岸:15(1111);
leebeen34 2011-04-28
  • 打赏
  • 举报
回复
1.农夫+羊过去 1.农夫+羊过去
2.农夫回来 2.农夫回来
3.农夫+狼过去 3.农夫+白菜过去
4.农夫+羊回来 4.农夫+羊回来
5.农夫+白菜过去 5.农夫+狼过去
6.农夫回来 6.农夫回来
7.农夫+羊过去 7.农夫+羊过去
liangtu 2011-04-28
  • 打赏
  • 举报
回复
脑筋急转弯!!!怎么跑这来问了。
24K純帥 2011-04-27
  • 打赏
  • 举报
回复
不要用程序写吧。。
茫茫大海 2011-04-27
  • 打赏
  • 举报
回复
好像是小学三年级的时候就知道了!
new_bird_0001 2011-04-27
  • 打赏
  • 举报
回复
先带羊,然后回来带狼或白菜,过去后将羊带回,再把剩下的白菜或狼带到对岸,最后回来把羊带去,任务完成.
python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题python练习题py

23,405

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧