农夫需要把狼、羊、菜和自己运到河对岸去,只有农夫能够划船,而且船比较小,除农夫之外每次只能运一种东西,还有一个棘手问题,就是如果没有农夫看着,羊会偷吃菜,狼会吃羊。请考虑一种方法,让农夫能够安全地安排这些东西和他自己过河。 本题的广度搜索边界就是这8个动作,依次对这8个动作进行遍历最多可以转换为8个新状态,每个新状态又最多可以转化为8个新新状态,就形成了每个状态节点有8个(最多8个)子节点的状态树(八叉树)。本题算法的核心就是对这个状态树进行深度优先遍历,当某个状态满足结束状态时就输出一组结果。
2020-01-03 11:42:17 5KB cpp
1
数据结构,农夫过河。详细讲述过河 #include //0代表在河的这边;1代表在河的对岸 struct Condition{ int farmer; int wolf; int sheep; int cabbage; }; struct Condition conditions[100];//结构体条件数组 char * action [100]; void takeWolfOver(int i) //把狼来过去 { action[i]="把狼过去.---->对岸"; conditions[i+1].wolf=1; conditions[i+1].sheep=conditions[i].sheep; conditions[i+1].cabbage=conditions[i].cabbage; } void takeWolfBack(int i)/*把狼带回来*/ { action[i]="带狼回来.本岸对岸"; conditions[i+1].wolf=conditions[i].wolf; conditions[i+1].sheep=1; conditions[i+1].cabbage=conditions[i].cabbage; } void takeSheepBack(int i)/*把羊带回来*/ { action[i]="带羊回来.本岸对岸"; conditions[i+1].wolf=conditions[i].wolf; conditions[i+1].sheep=conditions[i].sheep; conditions[i+1].cabbage=1; } void takeCabbageBack(int i)/*把菜带回来*/ { action[i]="带菜回来.本岸对岸"; conditions[i+1].wolf=conditions[i].wolf; conditions[i+1].sheep=conditions[i].sheep; conditions[i+1].cabbage=conditions[i].cabbage;/*全不动*/ } void getBackBarely(int i)/*返回时的情况*/ { action[i]="空手回来.本岸<---(barely)"; conditions[i+1].wolf=conditions[i].wolf; conditions[i+1].sheep=conditions[i].sheep; conditions[i+1].cabbage=conditions[i].cabbage; } void showSolution(int i)/*显示解决方法*/ { int c; printf("\n"); printf("%s\n","解决办法:"); for(c=0;c
2020-01-03 11:34:25 4KB 农夫过河
1
怎样用c语言解决 数据结构农夫过河问题
2020-01-03 11:26:58 38KB c语言 数据结构 农夫过河
1
该资源包括有界面和无界面的。一个农夫带着—只狼、一只羊和—棵白菜,身处河的南岸。他要把这些东西全部运到北岸。他面前只有一条小船,船只能容下他和—件物品,另外只有农夫才能撑船。如果农夫在场,则狼不能吃羊,羊不能吃白菜,否则狼会吃羊,羊会吃白菜,所以农夫不能留下羊和白菜自己离开,也不能留下狼和羊自己离开,而狼不吃白菜。
2019-12-30 03:01:22 485KB java 农夫过河
1
本软件进一步作了修改,确保能用。除覆盖破解外还彻底解决到期需要付费注册的问题,用过就知道它的强大了。
2019-12-28 17:50:18 76.69MB 象过河 6.4.297 完全破解
1
首先 声明 有几个可能没有做完(就一两个) 大家下了别骂人啊 数据结构—课程设计 包括 一元稀疏多项式计算器 迷宫问题 成绩分析问题 图的基本操作 实现以及背包问题 农夫过河问题的求解 13 停车厂模拟管理程序的设计与实现 12 简易电子表格的设计 11 简单个人书管理系统的设计与实现 6 二叉排序树与平衡二叉树的实现 9 内部排序算法的性能分析
2019-12-26 03:41:02 769KB 课程设计 java 数据结构 迷宫
1
修道士与野人过河问题,包括界面编写。
2019-12-21 22:23:59 16KB 过河问题 (有界面)
1
一个农夫带着一只狼,一只羊和一棵白菜,身处河的南岸。他要把这些东西全部运到北岸。他面前有一条小船,船只只能容下他和一件东西,另外只有农夫才能撑船。如果农夫在场,则狼不能吃羊,样不能吃白菜否则狼会吃羊,羊会吃白菜,所以农夫不能留下羊和白菜自己离开 也不能留下狼和羊自己离开。请求出农夫将所有东西运过河的方案。 实现上述求解的搜索过程可以用两中不同的方案:一种是广度优先搜索,另一种是深度优先搜索
1
一个人带着一匹狼、一只羊和一筐白菜要自己划船从河的北岸过河到南岸。人不在时,狼会吃羊,羊会吃白菜。只有人会划船并且每次只能带一个对象过河。此程序解决如何过河
2019-12-21 22:07:39 1KB C++语言
1
本题的状态转换算法依然是对状态空间中所有状态进行深度优先搜索,因为狼、羊和菜不会划船,所以状态转换算法也很简单,不需要象“用三个水桶均分8升水”问题那样要用排列组合的方式确定转换方法(倒水动作),本题一共只有8种固定的状态转换运算(过河动作),分别是: 农夫单独过河; 农夫带狼过河; 农夫带羊过河; 农夫带菜过河; 农夫单独返回; 农夫带狼返回; 农夫带羊返回; 农夫带菜返回.
2019-12-21 22:01:06 5KB cpp
1