1.实验内容
用C#,编写完成了使用者分别输入猴子、香蕉、箱子所在的位置,输出完整的猴子摘香蕉的过程。
2.大致逻辑
首先由使用者输入猴子、箱子和香蕉所在的位置,首先判断猴子和箱子是否在同一位置,若不在同一位置,则让猴子移动到箱子所在的位置,改变状态结构体中猴子位置的值。
在第一步实现的情况下,判断猴子、箱子和香蕉是否在同一位置上,若是,则猴子爬箱子摘香蕉,若不是,则让猴子将箱子推到香蕉的位置,此时改变状态结构中猴子和箱子位置的值。
当猴子、箱子和香蕉在同一位置后,判断猴子是否在箱子上,若在箱子上,直接摘香蕉,若猴子没在箱子上,先让猴子爬上箱子,再摘香蕉,此时改变状态结构中关于猴子是否在箱子上的值,最后将步骤输出在控制台中。
3.代码实现
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Monkey
{
class Program
{
struct State
{
public int Monkey; //猴子位置
public int Banana; //香蕉位置
public int Box; //盒子位置
public bool MonB; //猴子是否在盒子上,True为在,False为不在
}
//新建结构体数组和对应步骤
static State[] states = new State[200];
Dictionary<int, string> stepSave = new Dictionary<int, string>();
public static void Main(string[] args)
{
Program pg = new Program();
Console.Write("输入猴子位置(-1,0,1):");
SetRange(ref states[0].Monkey, int.Parse(Console.ReadLine()));
Console.Write("输