大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
- 背景简介/问题描述
一个房间里,天花板上挂有一串香蕉,有一只猴子可在房间里任意活动(到处走动,推移箱子,攀登箱子等)。设房间里还有一只可被猴子移动的箱子,且猴子登上箱子时才能摘到香蕉,问猴子在某一状态下(设猴子位置为A,香蕉位置在B,箱子位置为C),如何行动可摘取到香蕉。
此问题的前提是猴子只有站在箱子上才能拿到香蕉,因此,需要首先让猴子找到箱子,再找到香蕉,并将箱子搬到香蕉下面。
- 算法介绍
2.1 使用语义网络实现猴子摘香蕉的知识表示
2.2用java实现猴子摘香蕉
Monkey类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
package rgznlab1; public class monkey{ private final String position; private boolean status; public monkey(String position){ this.position = position; this.status = false; } public String getPosition() { return this.position; } public box move(box b,String newPosition) { if(this.position.equals(b.getPosition())&&!this.status) { System.out.println(“猴子在”+this.position+”处把箱子推到了”+newPosition); return new box(newPosition);
}return b; }public void climb(box b) { if(this.position.equals(b.getPosition())&&!this.status) { this.status = true; System.out.println(“猴子在”+this.position+”处爬上了箱子”); } }public void pick(banana b) { if(this.status&&this.position.equals(b.getPosition())) { System.out.println(“猴子在”+this.position+”处摘到了香蕉”); } } |
Box类:
1 2 3 4 5 6 7 8 9 10 |
package rgznlab1; public class box{ private final String position; public box(String position){ this.position = position; }public String getPosition() { return this.position; } } |
Banana类:
1 2 3 4 5 6 7 8 9 10 |
package rgznlab1; public class banana{ private final String position; public banana(String position){ this.position = position; }public String getPosition() { return this.position; } } |
Main方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
package rgznlab1; import java.util.Scanner; public class main { public static void main(String[] args) { Scanner input=new Scanner(System.in); System.out.println(“请输入猴子位置”); String p1=input.next(); System.out.println(“请输入箱子位置”); String p2=input.next(); System.out.println(“请输入香蕉位置”); String p3=input.next(); monkey m = new monkey(p1); box b = new box(p2); banana bn = new banana(p3); System.out.println(“第一步:猴子移动到box处从”+m.getPosition()+”到”+b.getPosition()); m = new monkey(b.getPosition()); System.out.println(“第二步:猴子推动box从”+b.getPosition()+”到banana处”+bn.getPosition()); b = m.move(b, bn.getPosition()); System.out.println(“第三步:猴子爬上”+b.getPosition()+”处的box”); m.climb(b); System.out.println(“第四步:猴子摘到香蕉”); m.pick(bn); } } |
- 算法实现
3.1 实验结果
运行结果如图所示:
- 讨论及结论
本次实验,我同小组成员较好地完成了猴子摘香蕉的几种不同的知识表示的实现,并且通过代码层面的实现使我对知识有了更深的了解,也更加体会到猴子摘香蕉这一典型问题的价值与意义。
参考文献
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/189413.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...