猴子摘香蕉问题c语言_c语言人工智能算法

猴子摘香蕉问题c语言_c语言人工智能算法问题说明:房间内有一只猴子,一个箱子和一个挂在天花板上的香蕉。三者的位置如下图所示:初始状态:三者在输入的初始位置,猴子手上无香蕉,猴子不在箱子上。目标状态:三者均在香蕉对应的位置,猴子手上有香蕉,且在箱子上。实现步骤:猴子走到箱子处猴子将箱子推到香蕉处猴子爬上箱子猴子摘香蕉程序内容:本程序主要实现猴子摘香蕉的过程,即从初始状态到目标状态。程序运行后,根据用户输入的三者的位置,按照实现步骤更新每一过程后的状态变量,并将过程输出。本程序使用以下函数:main():主函数

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

问题说明:

房间内有一只猴子,一个箱子和一个挂在天花板上的香蕉。三者的位置如下图所示:猴子摘香蕉问题c语言_c语言人工智能算法

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

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

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

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

本程序使用以下函数:

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语言人工智能算法

 作业要求完美实现!!!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/189398.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • RapidXml使用

    RapidXml使用vs2017rapidxml-1.131RapidXml使用1.1创建xml#include<iostream>#include”rapidxml/rapidxml.hpp”#include”rapidxml/rapidxml_utils.hpp”#include”rapidxml/rapidxml_print.hpp”usingnamespacerapidxml;voidcrateXml(){ xml_document<>doc; x

    2022年7月17日
    23
  • LVS DR负载均衡配置

    LVS DR负载均衡配置

    2021年9月11日
    51
  • 详解银行家算法「建议收藏」

    详解银行家算法「建议收藏」简述:银行家算法是一种可以避免死锁的方法就是以银行借贷系统的分配策略为基础,判断并保证系统的安全运行。我们可以把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源就相当于用户向银行家贷款。实现方法:为保证资金的安全,银行家规定:(1)当一个顾客对资金的最大需求量不超过银行家现有的资金时就可接纳该顾客;(即当资源池中剩余的可利用资源>=线…

    2022年7月22日
    10
  • 你知道织梦后台安装插件时为什么会出现这个Character postion 686, ‘item’&n

    你知道织梦后台安装插件时为什么会出现这个Character postion 686, ‘item’&n

    2021年9月24日
    45
  • 朋友圈集赞图片生成器_朋友圈集赞神器

    朋友圈集赞图片生成器_朋友圈集赞神器大家好这是一款朋友圈积攒截图小程序里面内涵三款样式生成,一款图文,一款分享,一款查看的样式也就是我们威信朋友圈所用到的样式就包含了那些可以用户自由的添加哈!赞的数量那些可以用户自定义的哈另外所需的内容也是用户自定义的安装方法的话和往常一样!直接威信开发者工具打开源码然后设置一个合法域名上传审核就可以了合法域名在压缩包里面,搭建解压了就可以看到了下面让我们来看看小编的测试演示图:小程序源码下载地址:(已更新)朋友圈集赞万能截图生成器威信小程序源码下载-小程序文.

    2025年9月18日
    4
  • linux修改用户密码命令_linux更改用户密码的命令

    linux修改用户密码命令_linux更改用户密码的命令Linux修改用户密码使用的Linux版本是:ubuntu-18.10-live-server-amd64知道一个用户名密码时,修改用户密码,各个版本下都是通用的;重置密码的时候,版本不同,可能操作的地方不一样了。如果一个账号的密码都不记得了(这通常是需要修改用户密码最多的情况),那就需要重置密码,相对就比较复杂一些,放在最后讲。但凡知道一个用户的密码,那就好办。(普通用户登录的情况下,也可以修改root用户的密码。)1.知道一个账号的密码这就是正常情况下,修改用户密码。1.1知道roo

    2025年9月21日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号