zoukankan      html  css  js  c++  java
  • 生兔子问题

    很有意思的面试题大家快来看看
     
    一对小兔子一年后长成大兔子;一对大兔子每半年生一对小兔子。大兔子的繁殖期为4年,兔子的寿命是6年。假定第一年年初投放了一对小兔子,

    试编程计算,第n年末总共会有多少对兔子。n由键盘输入(请针对面向对象编程)

    兔子类
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
     
    namespace ConsoleApplication2
    {
        class rabbit
        {
            private double year;
           
            public double Year
            {
                get { return year; }
                set { year = value; }
            }
            private int dai;
     
            public int Dai
            {
                get { return dai; }
                set { dai = value; }
            }
     
     
     public rabbit(int jidai)
     {
         this.Dai = jidai;
    }  
           
     
        }
    }
     
    调用类
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
     
    namespace ConsoleApplication2
    {
        class Program
        {
            static void Main(string[] args)
        {
                Console.Write("年份:");
    string Sinput = Console.ReadLine();
    double dyear;
    if(double.TryParse(Sinput,out dyear))
                {
    Program fs = new Program();
    int count = fs.GetNum(dyear);
    Console.WriteLine("{0}年兔子总数:{1}只",dyear,count);
    }
    else
                {
     
    Console.WriteLine("您输入的有误");
     
    }
    }
         
         
           
            private int era = 1;
    private List<rabbit> ralist;//总兔子放在这里
    private double startTime;
     
    public  Program()
            {
    ralist = new List<rabbit>();
    ralist.Add(new rabbit(this.era));
                ralist.Add(new rabbit(this.era));//是一对兔子,所以填两只
    }
     
    public int GetNum(double Year)
            {
    if(Year-this.startTime<=0.0){
    return ralist.Count;//返回有几许对兔子
    }
     
                //在生育期的兔子
     
    List<rabbit> nrs = ralist.FindAll(r=>r.Year>=1.5&&r.Year<=5.5);
     
    if(nrs.Count>0)
                {
    this.era++;//生兔子,兔子总数,兔子代数
    }
    for(int i=0;i<nrs.Count;i++){
                   
    ralist.Add(new rabbit(this.era));//将新出生的小兔子添加到原兔子
    }
    nrs.Clear();//清空本年份的计算
               
                //大于六年的兔子死掉了
     
    int killNum = ralist.RemoveAll(r=>r.Year>=6.0);
             
     
    this.startTime += 0.5;//开始时间增长
    foreach(rabbit rt in ralist){
    rt.Year+=0.5;//所有兔子长了
    }
    return GetNum(Year);//递归调用
    }
         
        }
    }
  • 相关阅读:
    Cookie笔记
    Java中Scanner类
    Java 位运算(移位、位与、或、异或、非)
    Python:urllib和urllib2的区别
    Scrapy在win7 32位的安装及依赖包
    [转] Windows下使用Python读取Excel表格数据
    python sort()和sorted()方法
    flask开发遇到 Must provide secret_key to use csrf解决办法
    flask开发遇到Internal Server Error的解决办法
    Android开发之消息机制
  • 原文地址:https://www.cnblogs.com/weiwin/p/2844522.html
Copyright © 2011-2022 走看看