猴子摘香蕉问题c语言_c语言人工智能算法
2023-06-13 09:14:50 时间
问题说明:
房间内有一只猴子,一个箱子和一个挂在天花板上的香蕉。三者的位置如下图所示:
初始状态:三者在输入的初始位置,猴子手上无香蕉,猴子不在箱子上。
目标状态:三者均在香蕉对应的位置,猴子手上有香蕉,且在箱子上。
实现步骤:猴子走到箱子处猴子将箱子推到香蕉处猴子爬上箱子猴子摘香蕉
程序内容: 本程序主要实现猴子摘香蕉的过程,即从初始状态到目标状态。程序运行后,根据用户输入 的三者的位置,按照实现步骤更新每一过程后的状态变量,并将过程输出。
本程序使用以下函数:
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;
}
else
return 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;
}
else
return 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;
}
else
return 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;
}
else
return false;
return true;
}
程序运行结果:
作业要求完美实现!!!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
相关文章
- 数据结构与算法二叉树的算法_数据结构c语言二叉树的深度
- 逆变器运用到的c语言算法,详解六种逆变电源的控制算法[通俗易懂]
- 深入解析最短路径算法
- 使用python语言编写常见的文本分类算法
- 模拟实现银行家算法c语言
- 论文算法伪代码word_论文伪代码要配文字描述吗
- 【视频】K近邻KNN算法原理与R语言结合新冠疫情对股票价格预测|数据分享|附代码数据
- 【视频】Copula算法原理和R语言股市收益率相依性可视化分析|附代码数据
- 桶排序算法c语言_哪种排序算法最快
- 经典递归解决汉诺塔_c语言汉诺塔递归算法
- 【视频】时间序列分类方法:动态时间规整算法DTW和R语言实现
- C/C++语言常用排序算法
- 推荐系统[一]:超详细知识介绍,一份完整的入门指南,解答推荐系统相关算法流程、衡量指标和应用,以及如何使用jieba分词库进行相似推荐
- 【视频】K近邻KNN算法原理与R语言结合新冠疫情对股票价格预测|数据分享|附代码数据
- 数据分享|R语言逻辑回归、Naive Bayes贝叶斯、决策树、随机森林算法预测心脏病|附代码数据
- 算法工程师成长必备:一套小白也能看懂的算法书!
- 算法基础课二分笔记和有关二分的题目
- 神经网络分类算法 数据挖掘详解大数据
- JAVA语言实现二叉树的层次遍历的非递归算法及递归算法详解编程语言
- Go语言实现二分查找算法
- 拓宽并发能力,采用Redis令牌桶算法(并发redis令牌桶)
- 的聪明算法Oracle聪明算法最大化百分比表现(oracle 体现百分比)
- php数字游戏计算24算法