猴子摘香蕉实验报告含代码
猴子摘香蕉实验报告记录(含代码)

猴子摘香蕉实验报告记录(含代码)————————————————————————————————作者:————————————————————————————————日期:华中科技大学《人工智能与模式识别》实验报告院系:电子与信息工程系班级:姓名:同组人:指导老师:电话:邮箱:日期:2013年12月24日一、实验内容利用一阶谓词逻辑求解猴子摘香蕉问题:房内有一个猴子,一个箱子,天花板上挂了一串香蕉,其位置如图所示,猴子为了拿到香蕉,它必须把箱子搬到香蕉下面,然后再爬到箱子上。
请定义必要的谓词,列出问题的初始化状态(即下图所示状态),目标状态(猴子拿到了香蕉,站在箱子上,箱子位于位置b)。
(附加:从初始状态到目标状态的谓词演算过程。
)二、实验平台VC6.0三、实验分析1. 定义描述环境状态的谓词。
AT(x,w):x在t处,个体域:xϵ{monkey},wϵ{a,b,c,box};HOLD(x,t):x手中拿着t,个体域:tϵ{box,banana};EMPTY(x):x手中是空的;ON(t,y):t在y处,个体域:yϵ{b,c,ceiling};CLEAR(y):y上是空的;BOX(u):u是箱子,个体域:uϵ{box};BANANA(v):v是香蕉,个体域:vϵ{banana};2. 使用谓词、连结词、量词来表示环境状态。
问题的初始状态可表示为:S o:AT(monkey,a)˄EMPTY(monkey)˄ON(box,c)˄ON(banana,ceiling)˄CLEAR(b)˄BOX(box)˄BANANA(banana)要达到的目标状态为:S g:AT(monkey,box)˄HOLD(monkey,banana)˄ON(box,b)˄CLEAR(ceiling)˄CLEAR(c)˄BOX(box)˄BANANA(banana)3. 从初始状态到目标状态的转化, 猴子需要完成一系列操作, 定义操作类谓词表示其动作。
猴子与香蕉:心理学实验中管理之道

猴子与香蕉:心理学实验中管理之道2009/5/19/08:15 来源:价值中国作者:于同辉心理学里有一个非常经典的试验:猴子和香蕉。
把五只猴子关在一个笼子里,笼子顶上挂一串香蕉,在笼子顶上同时安装了一个喷头,只要有猴子试图摘香蕉,喷头就会喷出水来。
因为猴子都喜欢吃香蕉,因此几乎所有的猴子都试图去摘香蕉,但是无一例外都会被喷头喷出的水淋得浑身湿透,结果过了一段时间后,似乎所有的猴子都明白了这个“道理”——只要试图摘香蕉就会被水淋,于是没有任何一只猴子去摘挂在笼子顶上的香蕉,尽管它们都非常喜欢吃。
后来,试验人员用一只新猴子(简称A猴子)换出原来的一只猴子,这只A猴子看到笼子顶上的香蕉,也和原来的猴子刚开始一样试图去摘,这时,所有原来的猴子都不约而同地冲上去把这只A猴子暴打一顿,以后只要这只A猴子想去摘,就会遭到其它猴子的暴打,如此经过一段时间,A猴子也和原来的猴子一样放弃了摘香蕉的企图。
试验人员又用另一只新猴子(简称B猴子)换出另一只原来的猴子,发生的情况与A猴子刚进来时一样,只要B猴子试图摘香蕉就会遭到暴打,而且A猴子打的最重。
就这样,经过很长一段时间后,原来的猴子都被换出去了,笼子里的猴子已经更换了几个轮回,顶上的喷头也已经早就取消了,但只要有新进来的猴子试图去摘香蕉都会遭到其它猴子的暴打,至于为什么会遭到暴打,没有一个猴子知道原因,但每个猴子都很自觉地养成了这样的习惯。
这个经典的实验应用到组织管理上至少可以引伸出三层意思:首先,组织实施的任何变革,开始时都是少数人试图改变多数人,阻力一般很大,当多数人认可和接受变革后,就变成了多数人去改变少数人,阻力要小很多。
因此,推行任何变革,都需要管理者的坚持。
其次,众所周知,猴子喜欢香蕉几乎是与生俱来的习惯,而上述实验中的实验者试图改变猴子吃香蕉的习惯,其难度可想而知,但实验者很聪明,他开始只改变五只猴子,当这五只猴子被改变后,又让这五只猴子去改变越来越多的猴子,那么这最初的五只猴子就像是五粒种子。
猴子摘香蕉实验报告

实验1:猴子摘香蕉问题的VC编程实现一、实验目的利用一阶谓词逻辑求解猴子摘香蕉问题并通过编程来实现二、编程环境本文主要编译环境是Windows 10 Visual Studio 2015 在Ubuntu 12.0 用gcc编译来演示问题的另外几种状态的解法三、问题描述房内有一个猴子,一个箱子,天花板上挂了一串香蕉,其位置如图所示,猴子为了拿到香蕉,它必须把箱子搬到香蕉下面,然后再爬到箱子上。
请定义必要的谓词,列出问题的初始化状态(即下图所示状态),目标状态(猴子拿到了香蕉,站在箱子上,箱子位于位置b)。
四、解决方案1.定义描述环境状态的谓词。
AT(x,y):x在y处,个体域:xϵ{monkey, box,banana },yϵ{a,b,c};HAND(s):猴子手中拿着s,个体域:sϵ{box,banana};ONBOX(monkey):猴子在箱子上;2.使用谓词、连结词、量词来表示环境状态。
问题的初始状态可表示为:S o:A T(monkey,a)˄ ~HAND(s)˄AT(box,c) ˄ ~ONBOX(monkey) ˄AT(banana,b)要达到的目标状态为:S g:AT(box,b) ˄ ONBOX(monkey) ˄ HAND(banana)˄AT(monkey,b) ˄AT(banana,b)3.从初始状态到目标状态的转化, 猴子需要完成一系列操作, 定义操作类谓词表示其动作。
go(m,n):猴子从m走到n处,个体域:m,nϵ{a,b,c};movebox(m,n):猴子把箱子从m 处移动到n 处,个体域:m,n ϵ{a,b,c};onbox(m):猴子在m 处爬上箱子,个体域:m ϵ{a,b,c};catch(banana):猴子摘到香蕉;这3个操作也可分别用条件和动作来表示。
条件直接用谓词公式表示,是为完成相应操作所必须具备的条件;当条件中的事实使其均为真时,则可激活操作规则,于是可执行该规则中的动作部分。
人工智能 猴子香蕉问题

1.问题描述在一个房间内有一只猴子(可把这只猴子看做一个机器人)、一个箱子和一束香蕉。
香蕉挂在天花板下方,但猴子的高度不足以碰到它。
那么这只猴子怎样才能摘到香蕉呢?图1表示出猴子、香蕉和箱子在房间内的相对位置。
用四元表列(W,x,Y,z)来表示这个问题的状态。
其中,W-猴子的水平位置x-当猴子在箱子顶上时取x=1;否则取x=0Y-箱子的水平位置z-当猴子摘到香蕉时取z=1;否则取z=0这个问题中的操作(算符)如下:1、goto(U)猴子走到水平位置U,表示为Goto (U)(W,0,Y,z) -------------->(U ,0 ,Y ,z)即把状态(W,0,Y,z)变换为状态(U,0,Y,z)。
2、pushbox(V)猴子把箱子推到水平位置V,即有Pushbox (V)(W,0,W,z)---------------->(V ,0 ,V ,z )条件:猴子与箱子必须在同一位置上,并且,猴子不是在箱子顶上。
应当注意的是,要应用算符 pushbox(V),就要求产生式规则的左边,猴子与箱子必须在同一位置上,并且,猴子不是在箱子顶上。
这种强加于操作的适用性条件,叫做产生式规则的先决条件3、climbbox猴子爬上箱顶,即有Climbbox(W,0,W,z)------------------>(W,1,W,z)条件:猴子和箱子应当在同一位置上,而且猴子不在箱顶上。
4、grasp猴子摘到香蕉,即有Grasp(c,1,c,0) ------------------->(c,1,c,1)条件:猴子和箱子都在位置c上,并且猴子已在箱子顶上。
求解过程令初始状态为(a,0,b,0)。
这时,goto(U)是唯一适用的操作,并导致下一状态(U,0,b,0)。
现在有3个适用的操作,即goto(U),pushbox(V)和climbbox(若U=b)。
其中,c是香蕉正下方的地板位置,该初始状态变换为目标状态的操作序列为:{goto(b),pushbox(c),climbbox,grasp}应当说明的是,在这种情况下,算符(操作)的适用性及作用均由产生式规则表示。
猴子搬香蕉Java实现_趣味算法:猴子搬香蕉问题

猴⼦搬⾹蕉Java实现_趣味算法:猴⼦搬⾹蕉问题在博客园⼀篇⽂章末尾看到⼀个有趣的数学问题,据说是⼩学4年级的题⽬,摘引如下:⼀只⼩猴摘了300个⾹蕉,需要搬回家,每次最多搬100个。
⼩猴离家100⽶,它每⾛1⽶,都需要吃掉1个⾹蕉来补充能量,请问它最多能够搬回家多少个?思考了好⼀会,写了个⼩程序模拟这⼀过程:$bananas = 300;for($i = 1; $i <= 100; $i++){// 前200~300个的时候,每⼀⽶消耗5个,可以⾛20⽶if($bananas > 200)$bananas -= 5;// 100~200个的时候每⼀⽶消耗3个,可以⾛33⽶,也(100+99)⾛了53⽶else if($bananas > 101)$bananas -= 3;// 最后还有101个,接下来就可以带100个⾛不到47⽶(1个可以抵消0.33⽶以下),所以100-47+1=54个else$bananas--;echo '剩余⾹蕉数:'.$bananas.',剩余路程:'.(100 - $i).'';}echo $bananas;程序运⾏结果:剩余⾹蕉数:295,剩余路程:99剩余⾹蕉数:290,剩余路程:98剩余⾹蕉数:285,剩余路程:97剩余⾹蕉数:280,剩余路程:96剩余⾹蕉数:275,剩余路程:95剩余⾹蕉数:270,剩余路程:94剩余⾹蕉数:265,剩余路程:93剩余⾹蕉数:260,剩余路程:92剩余⾹蕉数:255,剩余路程:91剩余⾹蕉数:250,剩余路程:90剩余⾹蕉数:220,剩余路程:84剩余⾹蕉数:215,剩余路程:83剩余⾹蕉数:210,剩余路程:82剩余⾹蕉数:205,剩余路程:81剩余⾹蕉数:200,剩余路程:80剩余⾹蕉数:197,剩余路程:79剩余⾹蕉数:194,剩余路程:78剩余⾹蕉数:191,剩余路程:77剩余⾹蕉数:188,剩余路程:76剩余⾹蕉数:185,剩余路程:75剩余⾹蕉数:182,剩余路程:74剩余⾹蕉数:179,剩余路程:73剩余⾹蕉数:176,剩余路程:72剩余⾹蕉数:173,剩余路程:71剩余⾹蕉数:170,剩余路程:70剩余⾹蕉数:167,剩余路程:69剩余⾹蕉数:164,剩余路程:68剩余⾹蕉数:161,剩余路程:67剩余⾹蕉数:158,剩余路程:66剩余⾹蕉数:155,剩余路程:65剩余⾹蕉数:152,剩余路程:64剩余⾹蕉数:149,剩余路程:63剩余⾹蕉数:146,剩余路程:62剩余⾹蕉数:143,剩余路程:61剩余⾹蕉数:140,剩余路程:60剩余⾹蕉数:137,剩余路程:59剩余⾹蕉数:134,剩余路程:58剩余⾹蕉数:131,剩余路程:57剩余⾹蕉数:128,剩余路程:56剩余⾹蕉数:110,剩余路程:50剩余⾹蕉数:107,剩余路程:49剩余⾹蕉数:104,剩余路程:48剩余⾹蕉数:101,剩余路程:47剩余⾹蕉数:100,剩余路程:46剩余⾹蕉数:99,剩余路程:45剩余⾹蕉数:98,剩余路程:44剩余⾹蕉数:97,剩余路程:43剩余⾹蕉数:96,剩余路程:42剩余⾹蕉数:95,剩余路程:41剩余⾹蕉数:94,剩余路程:40剩余⾹蕉数:93,剩余路程:39剩余⾹蕉数:92,剩余路程:38剩余⾹蕉数:91,剩余路程:37剩余⾹蕉数:90,剩余路程:36剩余⾹蕉数:89,剩余路程:35剩余⾹蕉数:88,剩余路程:34剩余⾹蕉数:87,剩余路程:33剩余⾹蕉数:86,剩余路程:32剩余⾹蕉数:85,剩余路程:31剩余⾹蕉数:84,剩余路程:30剩余⾹蕉数:83,剩余路程:29剩余⾹蕉数:82,剩余路程:28剩余⾹蕉数:81,剩余路程:27剩余⾹蕉数:80,剩余路程:26剩余⾹蕉数:79,剩余路程:25剩余⾹蕉数:78,剩余路程:24剩余⾹蕉数:77,剩余路程:23剩余⾹蕉数:76,剩余路程:22剩余⾹蕉数:70,剩余路程:16剩余⾹蕉数:69,剩余路程:15剩余⾹蕉数:68,剩余路程:14剩余⾹蕉数:67,剩余路程:13剩余⾹蕉数:66,剩余路程:12剩余⾹蕉数:65,剩余路程:11剩余⾹蕉数:64,剩余路程:10剩余⾹蕉数:63,剩余路程:9剩余⾹蕉数:62,剩余路程:8剩余⾹蕉数:61,剩余路程:7剩余⾹蕉数:60,剩余路程:6剩余⾹蕉数:59,剩余路程:5剩余⾹蕉数:58,剩余路程:4剩余⾹蕉数:57,剩余路程:3剩余⾹蕉数:56,剩余路程:2剩余⾹蕉数:55,剩余路程:1剩余⾹蕉数:54,剩余路程:0标签:算法。
猴子的经典实验(一)

2017/3/4
猴子的经典实验(一)
后来慢慢的一只一只的,所有的旧猴子都 换成新猴子了,大家都不敢去动那香蕉。 但是他们都不知道为什么,只知道去动香 蕉会被猴扁。 这就是习惯的形成。
2017/3/4
6
2017/3/4
7
猴子的经典实验(一)
注:本实验原名为 “道德的起源”, 应某特设课程的需要,临时改为“习惯 的 形成”。 注意适当时改回来。
4
2017/3/4
猴子的经典实验(一)
后来实验人员再把一只旧猴子释放,换上 另外一只新猴子B。 这猴子B看到香蕉,也是迫不及待要去拿。 当然,一如刚才所发生的情形,其他四只 猴子海K了B一顿。 特别的是,那只A猴子打的特别用力(这 叫老兵欺负新兵,或是媳妇熬成婆 )。 B猴子试了几次总是被打的很惨,只好作 罢。
2017/3/4
8ห้องสมุดไป่ตู้
猴子的经典实验(一)
习惯的形成
2017/3/4
1
猴子的经典实验(一)
把五只猴子关在一个笼子里,上头 有一串香蕉,实验人员装了一个自动装置。 一旦侦测到有猴子要去拿香蕉,马 上就会有水喷向笼子,而这五只猴子都 会一身湿。
2017/3/4
2
猴子的经典实验(一)
首先有只猴子想去拿香蕉,当然, 结果就是每只猴子都淋湿了。 之後每只猴子在几次的尝试后,发 现莫不如此。 于是猴子们达到一个共识:不要去 拿香蕉,以避免被水喷到。
2017/3/4 3
猴子的经典实验(一)
后来实验人员把其中的一只猴子释放,换 进去一只新猴子A。 这只猴子A看到香蕉,马上想要去拿。 结果,被其他四只猴子海K了一顿。 因为其他四只猴子认为猴子A会害他们被 水淋到,所以制止他去拿香蕉,A尝试了几次, 虽被打的满头包,依然没有拿到香蕉。 当然,这五只猴子就没有被水喷到。
猴子与香蕉

猴子与香蕉研究人员做过一个有趣的实验:每天固定给猴群中的每只猴子3支香蕉。
当偶尔每天给每只猴子5支香蕉时,猴子们都会变得兴高采烈。
有一次,实验人员给了每只猴子10支香蕉,随后再从猴子手中收回2支。
虽然猴子们实际获得的香蕉数量超过以往任何一次,但是它们却对实验人员拿走它们手里的2支香蕉感到非常愤怒。
激动的情绪几个小时都不能平复。
管理启示这样的现象在我们人类社会中也十分常见。
比如,每个月给员工固定发放300元的奖金,员工很高兴。
突然一个月给发了1000元奖金,之后又告之是计算错误,追回了500元多发的奖金,之后又告之是财务部门计算错误,追回了500元多发的奖金。
尽管员工还是多得到了200元奖金,但是他们对公司的抱怨却远高于每月领300元奖金的时候。
这就是人性中一个有趣的特点,我们常常会和猴子一样,存在思维误区,做出同样的反应与行为。
所以,在人力资源管理工作中,不注意这种思想对员工的影响,可能会让企业花费很多心力,员工却不买帐,甚至是费力不讨好。
两个送水工从前有个奇异的小村庄,村里除了雨水没有任何水源,为了解决这个问题,村里的人决定对外签订一份送水合同,以便每天都能有人把水送到村子里。
有两个人接受了合同,其中一个叫艾德,他立刻行动了起来。
每日奔波于一公里外的湖泊和村庄之间,用两只桶从湖中打水并运回村庄的大蓄水池中。
每天早晨他都必须起得比其他村民早,以便当村民需要用水时,蓄水池中已有足够的水供使用。
由于起早贪黑地工作,艾德很快就开始挣钱了。
尽管这是一项相当艰苦的工作,但是艾德和高兴,因为他能不断地挣钱。
另外一个获得合同的人叫比尔。
令人奇怪的是,自从签订合同后比尔就消失了,几个月来,人们一直没有看见过他。
这令艾德兴奋不已,由于没人与他竞争,他挣到了所有的水钱。
比尔干什么去了?他做了一份详细的商业计划书,并凭借这份计划书找到了4位投资者,和他们一起开了一家公司。
六个月后,比尔带着一个施工队和一笔投资回到了村庄。
猴子摘香蕉效应 Microsoft Word 文档

猴子摘香蕉效应驯兽师挑选聪明的猴子是把一群猴子关在一个屋子里。
他把香蕉挂的高高的,屋里有桌子,椅子,还有长竹竿等。
猴子看到香蕉,就想吃香蕉,就需要想办法。
猴子看到又不容易摘到,让他对香蕉充满期待又愿意去尝试,通过已有的工具,聪明的猴子就能吃到香蕉。
能吃到香蕉的猴子就是聪明的猴子。
在训练学生的思维过程中,我坚持猴子摘香蕉原则,要给与学生奖励使他们看得到思考的好处,担思考的内容是没有模式的,总是高出学过的知识一节,需要你运用已有的知识经验去解决这个面临的难题,长此以往既锻炼了思维,又能找到数学学习的乐趣。
一年级学了100以内的加减法出了样的一道题:3根小棒可以拼成一个三角形,多少根小棒可以拼成两个三角形,27根小棒可以拼成几个像这样的三角形?学生1:我先画27根小棒,再3根3根圈起来,可以圈9次,就是9个三角形.(二年级包含除,分一分用的方法.)学生2:我用27-3-3一直减,减了9次就是0了,就是9个三角形(这个孩子数感很好,而且也能说清楚为什么要减3,就是用去三根总数就少了3根,所以要减去3.)学生3:我是扳手指头,一个三角形要3根,就扳一根一根就一个三角形,两个要6根,三个要9根,9加3等于12根,就4个三角形(有的学生计算有点混提醒他注意计算和手配合.)9个就是是27根.还有一个学生说,我就知道是9个三角形就要27根我想一下就知道答案.看他那么神气,我就问那8个要多少根,那个虾子反应还真快,稍想了以下就说24根.学生4:我是画的三角形1,2,3,4,5,6,7,8,9,------一直画到27就行了.学生5:我还是画的,依次再数3,6,9,------27.学生6:3+3+3+3+3+3+3+3+3,方法没有优劣,只要是学生自己独立思考的方法,对个体来说就是好方法,听了的就忘了,自己思考了的就记住了,就是其他同学的方法他也更愿意去关注也愿意去比较。
例如刚学了乘法的口诀,我出了这样的思考题:一支钢笔8元,买16支笔应该多少元?学生1:我先算十支是10个8是80元,再买6支六八四十八要48元再把它们合起来就是128元。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
华中科技大学《人工智能与模式识别》
一、实验内容
利用一阶谓词逻辑求解猴子摘香蕉问题:房内有一个猴子,一个箱子,天花板上挂了一串香蕉,其位置如图所示,猴子为了拿到香蕉,它必须把箱子搬到香蕉下面,然后再爬到箱子上。
请定义必要的谓词,列出问题的初始化状态(即下图所示状态),目标状态(猴子拿到了香蕉,站在箱子上,箱子位于位置b)。
(附加:从初始状态到目标状态的谓词演算过程。
)
二、实验平台
VC6.0
1.
AT(x,w):x
HOLD(x,t)
EMPTY(x)
ON(t,y):t
CLEAR(y)
BOX(u):u
2.
S o:
S g:
BOX(box)?BANANA(banana)
3. 从初始状态到目标状态的转化, 猴子需要完成一系列操作, 定义操作类谓词表示其动作。
WALK(m,n):猴子从m走到n处,个体域:m,n?{a,b,c};
CARRY(s,r):猴子在r处拿到s,个体域:r?{c,ceiling},s?{box,banana};
CLIMB(u,b):猴子在b处爬上u;
这3个操作也可分别用条件和动作来表示。
条件直接用谓词公式表示,是为完成相应操作所必须具备的条件;当条件中的事实使其均为真时,则可激活操作规则,于是可执行该规则中的动作部分。
动作通过前后状态的变化表示,
即通过从动作前删除或增加谓词公式来描述动作后的状态。
WALK(m,n):猴子从m 走到n 处
条件:AT(monkey,m)
动作:⎩⎨⎧),()
,(n monkey AT m monkey AT 增加:删除:
CARRY(s,r):猴子在r 处拿到s
条件:AT(monkey,r)?EMPTY(monkey)?ON(s,r)?BOX(box)?BANANA(banana)
动作:⎩⎨⎧CLIMB(u,b)条件:动作:⎩⎨⎧4. AT(monkey,box)?EMPTY(monkey)?ON(box,b)?ON(banana,ceiling)?CLEAR(c)?BOX(box)?
BANANA(banana)
AT(monkey,box)?HOLD(monkey,banana)?ON(box,b)?CLEAR(ceiling)?CLEAR(c)?BOX(box)?
BANANA(banana)(目标得解)
猴子行动的规则序列是:WALK(a,c)→CARRY(c,box)→WALK(c,b)→CLIMB(box,b)→
CARRY(banana,ceiling)
在上述过程中,我们应该注意,当猴子执行某一个操作之前,需要检查当前状态是否可使所要求的条件得到满足,
即证明当前状态是否蕴涵操作所要求的状态的过程。
在行动过程中,检查条件的满足性后才进行变量的代换。
代入新条件后的新状态如果是目标状态,则问题解决;否则看是否满足下面的操作,如果不满足或即使满足却又回到了原来的状态,那么代入无效。
四、源代码
#include <stdio.h>
struct State
{
int monkey; /*-1:Monkey at A;0: Monkey at B;1:Monkey at C;*/
int box; /*-1:box at A;0:box at B;1:box at C;*/
};
{
int a;
a=b;
{
}
{
}
{
routesave[i]="Monkey go to C";
States[i+1]=States[i];
States[i+1].monkey=1;
}
else
{
printf("parameter is wrong");
}
}
/*end function monkeyygoto*/
/*function movebox,the monkey move the box to the other place*/ void movebox(int a,int i)
{
int B;
B=a;
if(B==-1)
{
routesave[i]="monkey move box to A";
States[i+1]=States[i];
States[i+1].monkey=-1;
}
{
}
{
}
else
{
}
}
void climbonto(int i)
{
routesave[i]="Monkey climb onto the box";
States[i+1]=States[i];
States[i+1].monbox=1;
}
/*function climbdown,monkey climb down from the box*/
void climbdown(int i)
{
routesave[i]="Monkey climb down from the box";
States[i+1]=States[i];
States[i+1].monbox=-1;
}
/*function reach,if the monkey,box,and banana are at the same place,the monkey reach banana*/ void reach(int i)
{
routesave[i]="Monkey reach the banana";
}
/*output the solution to the problem*/
void showSolution(int i)
{
int c;
{
}
}
{
int c;
int j;
{
}
{
{
return;
}
}
if(States[i].monbox==1&&States[i].monkey==0&&States[i].banana==0&&States[i].box==0) {
showSolution(i);
printf("Press any key to continue \n");
getchar();/*to save screen for user,press any key to continue*/
return;
}
j=i+1;
if(States[i].monkey==0)
{
if(States[i].box==0)
{
if(States[i].monbox==-1)
{
climbonto(i);
reach(i+1);
nextStep(j);
}
{
movebox(0,i);
nextStep(j);
climbonto(i);
reach(i+1);
nextStep(j);
}
else /*box==-1*/
{
monkeygoto(-1,i);
nextStep(j);
movebox(0,i);
nextStep(j);
climbonto(i);
reach(i+1);
nextStep(j);
}
}
/*end if*/
if(States[i].monkey==-1) {
if(States[i].box==-1)
{
}
{
nextStep(j);
climbonto(i);
reach(i+1);
nextStep(j);
}
else
{
monkeygoto(1,i);
nextStep(j);
movebox(0,i);
nextStep(j);
climbonto(i);
reach(i+1);
nextStep(j);
}
}
/*end if*/
if(States[i].monkey==1) {
if (States[i].box==1)
{
}
{
movebox(0,i);
nextStep(j);
movebox(0,i);
nextStep(j);
climbonto(i);
reach(i+1);
nextStep(j);
}
else
{
monkeygoto(0,i);
nextStep(j);
movebox(0,i);
nextStep(j);
climbonto(i);
reach(i+1);
nextStep(j);
}
}
/*end if*/
}/*end nextStep*/
int main()
{
}。