• 狐狸与兔子问题


    刚刚看道编程题:

    围绕着山顶有10个洞。一只兔子和一只狐狸各住一个洞。狐狸要吃兔子。兔子对狐狸说:“你想吃掉我可以,但必须找到我。我就藏身于这十个洞中,你从10号洞出发,先到1号洞找我,第二次隔一个洞找我,第三次隔两个洞找我,……,以后依次类推,若能找到我,可饱餐一顿。”。狐狸答应了,但是狐狸从早到晚进进出出了1000次,仍没找到兔子。请编程求兔子究竟躲在哪个洞里。 


    下面是我写的C#算法:


    using System;

    namespace ConsoleApplication3
    {
     /// <summary>
     /// Class1 的摘要说明。
     /// </summary>
     class Class1
     {
      /// <summary>
      /// 应用程序的主入口点。
      /// </summary>
      //[STAThread]
      static bool[] rabbitInCave=new bool[10]; //10个洞里有没有兔子
      static void SetRabbitInCave(int caveNumber)   //设定哪个洞里有兔子
      {
       for(int i=0;i<10;i++)
       {
        rabbitInCave[i]=false;
       }
       rabbitInCave[caveNumber]=true;
      }
      static int GetCaveNumber(int biggerCaveNumber)//得到正确的洞的编号
      {
       return biggerCaveNumber % 10;
      }
      static bool TestCave()//测试1000次内能否找到兔子
      {
       int stepADD=0;
       int caveNumber=9;
       for(int i=0;i<=1000;i++)
       {
        if(rabbitInCave[caveNumber])
         return true;
        stepADD+=1;
        caveNumber=GetCaveNumber(caveNumber+stepADD);
       }
       return false;
      }

      static void Main(string[] args)
      {
       //
       // TODO: 在此处添加代码以启动应用程序
       //
       /*   围绕着山顶有10个洞。一只兔子和一只狐狸各住一个洞。
        *   狐狸要吃兔子。兔子对狐狸说:“你想吃掉我可以,但必
        *   须找到我。我就藏身于这十个洞中,你从10号洞出发,
        *   先到1号洞找我,第二次隔一个洞找我,第三次隔两个洞找
        *   我,……,以后依次类推,若能找到我,可饱餐一顿。”。
        *   狐狸答应了,但是狐狸从早到晚进进出出了1000次,仍没找
        *   到兔子。请编程求兔子究竟躲在哪个洞里。 
        * */
       for(int i=0;i<10;i++)
       {
        SetRabbitInCave(i);
        if(!TestCave())
         Console.WriteLine("兔子可能在{0}号洞里。",i+1);
       }
      }

     }
    }


    运行,得到结果,兔子可能在2,4,7,9号洞里。

    张旋(zxsoft)
    如对本文有什么疑问,请在下面写下留言,谢谢!

  • 相关阅读:
    网络
    进程与线程
    JVM学习笔记(四)——Java内存模型和线程安全
    黑马程序员C++学习笔记
    在python中编写一个简单的关于类的情况遇到的问题(待解决)
    Python学习笔记
    项目实战
    老九学堂C++实现小游戏之小公主养成记
    C++实现经典排序算法
    C++学习代码笔记
  • 原文地址:https://www.cnblogs.com/zxsoft/p/91029.html
Copyright © 2020-2023  润新知