社区
非技术区
帖子详情
古代谜题
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练习题Question100.txt
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
华中科技大学2025年游戏开发设计大作业项目一款基于Unity引擎开发的3D冒险解谜游戏结合了物理模拟与人工智能技术以中国
古代
神话为背景玩家扮演一位年轻道士探索神秘仙境通.zip
华中科技大学2025年游戏开发设计大作业项目一款基于Unity引擎开发的3D冒险解谜游戏结合了物理模拟与人工智能技术以中国
古代
神话为背景玩家扮演一位年轻道士探索神秘仙境通.zip
Python代码解决数学
谜题
-百钱买百鸡-问题示例
python百钱买百鸡 这个程序使用两个嵌套循环来尝试不同的公鸡和母鸡数量,然后计算出小鸡的数量。它检查是否满足条件:总价格为 100 元,总数量为 100 只鸡。如果条件满足,程序将打印出符合条件的公鸡、母鸡和小鸡的数量组合。 运行此程序,它将找到所有符合条件的解并将其打印出来。在这个问题中,可能有多个解。
神秘手稿之魔鬼的靴子(,十一)
神秘手稿之魔鬼的靴子(,十一)
小学数学数学神探贫富不同
小学数学数学神探贫富不同
非技术区
23,405
社区成员
70,513
社区内容
发帖
与我相关
我的任务
非技术区
Java 非技术区
复制链接
扫一扫
分享
社区描述
Java 非技术区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章