问题说明:

房间内有一只猴子,一个箱子和一个挂在天花板上的香蕉。三者的位置如下图所示:

初始状态:三者在输入的初始位置,猴子手上无香蕉,猴子不在箱子上。

目标状态:三者均在香蕉对应的位置,猴子手上有香蕉,且在箱子上。

实现步骤:猴子走到箱子处猴子将箱子推到香蕉处猴子爬上箱子猴子摘香蕉

程序内容: 本程序主要实现猴子摘香蕉的过程,即从初始状态到目标状态。程序运行后,根据用户输入 的三者的位置,按照实现步骤更新每一过程后的状态变量,并将过程输出。

本程序使用以下函数:

main():主函数

go_to_box():猴子走到箱子处

move_box():猴子搬箱子

climb_box():猴子爬箱子

get_banana():猴子摘香蕉

本程序使用C++实现:

#include <iostream>
#include <string>
#include <vector>using namespace std;/*
File name:monkey_get_banana
Date:11.15
*///用一个结构体变量记录某一状态下猴子、箱子、香蕉的位置,以及猴子是否在箱子上、是否摘得香蕉
struct stack{string MONKEY; string BANANA;string BOX;int HAVE; //1表示摘得,0表示没有 int ISON;   //1表示猴子在箱子上,0表示没有
};//函数申明
bool go_to_box(struct stack& s,string m,string n);
bool move_box(struct stack& s, string m, string n);
bool climb_box(struct stack& s, string pos);
bool get_banana(struct stack& s,string pos);int main(){string monkey,banana,box;struct stack sq;cout << "用a,b,c三个数字输入猴子、香蕉、箱子的位置,中间用空格隔开" << endl;cin >>monkey>>banana>>box;cout <<"输入的 猴子 香蕉 箱子的位置分别是:"<<endl;cout <<"monkey\tbanana\tbox"<<endl; cout <<monkey<<"\n\t"<<banana<<"\n\t\t"<<box<<endl;cout <<"猴子摘香蕉的过程如下:"<< endl; //初始化 sq.MONKEY = monkey;sq.BANANA = banana;sq.BOX = box;sq.HAVE = 0;sq.ISON = 0;//摘香蕉过程 go_to_box(sq,sq.MONKEY,sq.BOX);move_box(sq, sq.MONKEY, sq.BANANA);climb_box(sq,sq.BANANA);get_banana(sq,sq.BANANA);return 0;
}bool go_to_box(struct stack& s,string m,string n){if (s.MONKEY == m){s.MONKEY = n; cout <<"\n第一步:猴子从 "<<m<<" 处走到 "<<n<< endl;return true;}elsereturn false;return true;
}bool move_box(struct stack& s, string m, string n)
{if (s.MONKEY == m && s.BOX == m){s.MONKEY = n;s.BOX = n;cout <<"\n第二步:猴子将箱子从 "<<m<<" 处移到 "<<n<< endl;return true;}elsereturn false;return true;
}bool climb_box(struct stack& s, string pos){if (s.MONKEY == pos && s.BOX == pos && s.BANANA == pos && s.ISON == 0){s.ISON = 1;cout <<"\n第三步:猴子在"<<pos<<"处爬上箱子"<<endl;return true;}elsereturn false;return true;
}bool get_banana(struct stack& s,string pos){if (s.MONKEY == pos && s.BOX == pos && s.BANANA == pos && s.ISON == 1){s.HAVE = 1;cout <<"\n第四步:猴子摘得香蕉"<<endl;}elsereturn false;return true;
}

程序运行结果: 

作业要求完美实现!!!

人工智能程序——猴子摘香蕉(C语言)相关推荐

  1. 人工智能算法 猴子摘香蕉

    只有简单的状态显示 #include "iostream"using namespace std; void AT(char monkeyplace, char boxplace) ...

  2. 人工智能实验 猴子摘香蕉

    题目意思: 猴子定义了4个状态  空手移动,推箱子,爬箱子,摘香蕉 用 (w,x,y,z)描述 w定义了猴子位置 x为1表示猴子在箱子上,0表示不在箱子上 y表示箱子位置 z为1表示猴子摘到香蕉(结束 ...

  3. 人工智能实验——猴子摘香蕉python

    import random # 全局变量i i = 0 monkey = [] box = [] banana = [] monbox = [] getit = []def Monkey_goto(A ...

  4. 用python语言实现人工智能猴子摘香蕉的问题_人工智能实验报告大全:猴子摘香蕉问题的VC编程实现等八次.docx...

    人工智能课内实验报告(8次)学 院: 自动化学院 班 级: 智能1501 姓 名: 刘少鹏(34) 学 号: 目 录课内实验1:猴子摘香蕉问题的VC编程实现--------1课内实验2:编程实现简单动 ...

  5. 用python语言实现人工智能猴子摘香蕉的问题_人工智能实验报告大全:猴子摘香蕉问题的VC编程实现等八次 -...

    人工智能课内实验报告 (8次) 学 院:自动化学院 班 级: 智能1501 姓 名: 刘少鹏(34) 学 号:06153034 目 录 课内实验1:猴子摘香蕉问题的VC编程实现????????1 课内 ...

  6. 用python语言实现人工智能猴子摘香蕉的问题_【提问】求大神看看代码哪里错了 C语言猴子摘香蕉...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include int W; /*W -猴子的水平位置 */ int x; /*x -当猴子在箱子顶上时取 x=1 ...

  7. JAVA语言写的人工智能小实验——猴子摘香蕉

    背景简介/问题描述 一个房间里,天花板上挂有一串香蕉,有一只猴子可在房间里任意活动(到处走动,推移箱子,攀登箱子等).设房间里还有一只可被猴子移动的箱子,且猴子登上箱子时才能摘到香蕉,问猴子在某一状态 ...

  8. 【C++】人工智能实验一 猴子摘香蕉/传教士与野人(含完整代码与状态迁移图)

    文章目录 一.猴子摘香蕉问题 1.问题描述 2.解题思路 3.实验结果及分析 实验结果一 实验结果二 实验结果三 4.实验结果 5.实验代码 二.传教士(牧师)与野人问题 1.问题描述 2.实验步骤 ...

  9. 【SC应用】【人工智能】Java实现猴子摘香蕉,动画显示

    人工智能课程实验一的任务,写出猴子摘香蕉问题的知识表示,并用代码实现推理过程 问题描述 一个房间里,天花板上挂有一串香蕉,有一只猴子可在房间里任意活动(到处走动,推移箱子,攀登箱子等).设房间里还有一 ...

最新文章

  1. freemarker if判断
  2. Bootstrap中默认表单的创建
  3. C# ASP.Net 设置外网访问
  4. java获取apk启动activity_兼容 Android 10 启动 APK 实现方案
  5. equal_range
  6. linux延迟绑定,php延迟绑定和非延迟绑定解析
  7. 2011年白银机会远超黄金 四妙招帮您赚大
  8. GitHub提速方法大揭秘,10M速度使用无忧
  9. perl调用其他的perl_如何使Perl更优雅
  10. c语言中switch嵌套,C 嵌套 switch 语句 ——jQuery中文网
  11. (转载)深入理解WeakHashmap
  12. java读取excel隐藏列,#用poi做excle导入时怎样判断行是否隐藏#poi excle读出数据
  13. 淘宝店铺排名还在用老方法吗,优化店铺排名方法是否正确?
  14. Qt 之QDockwidget 自定义窗口标题栏
  15. odoo 企业邮箱配置发送邮件
  16. includes() 方法
  17. Xlsx转Json(JS Object/Array) Javascript/Typescript版本
  18. 怎么提取视频中的音频?
  19. 互联网、电话订票起售时间(时刻)
  20. [cognexVisionPro]错误:Vpp_1.vpp包含Cognex.visionPro.ToolBlock.CogToolBloc而不是CogJob

热门文章

  1. 吃海鲜视频软件测试,IDE硬盘用HD Tune Pro检测健康状态警告分析。是否需要低级格式化?...
  2. 80c51汇编语言程序设计,章4 80C51的汇编语言程序设计
  3. 80C51串口的工作方式
  4. 什么是数据标准,如何做好数据标准管理?
  5. jfinal linux编码,JFinal 的初始化
  6. 完美收纳特色装饰 日本小两口的56平温馨窝
  7. 服务器DNS服务是否自动安装,DNS服务器之一:DNS简介及BIND安装与基本配置 | 旺旺知识库...
  8. ElasticSearch学习 ④ IK分词器(elasticsearch插件)+自定义字典
  9. 影响中国发展的七大垂直搜索引擎!!
  10. SuperMap制图之瓦片技术