csdn 兔子 算法

csdn上的一个有意思的算法
有一对公母刚出生的小兔子,小兔子每隔2个月就会声新的一对小兔子,新的小兔子每隔2个月也会生新的一对小兔子.小兔子的生存期是3个月,也就是说当小兔 子从出生到第三个月的时候生完新的小兔子就会死掉,编写出一个程序,当用户输入年份后,结果显示当月兔子总数。第18个月的兔子数有几?

先定义一个小兔子类
C# code
   
   

public class Rabbit
{
private int _bornMonth; // 兔子出生月份,唯一的一个属性
public Rabbit( int bornMonth)
{
_bornMonth
= bornMonth;
}
public int BornMonth
{
set { _bornMonth = value; }
get { return _bornMonth; }
}
}


迭代方法

C# code
   
   

Rabbit rabit1
= new Rabbit( 1 ); // 第一个月的初始小兔子
List < Rabbit > rabbitList = new List < Rabbit > (); // 小兔子集合
rabbitList.Add(rabit1);
for ( int i = 2 ; i <= 18 ; i ++ ) // 每个月检查小兔子状态
{
for ( int j = 0 ; j < rabbitList.Count; j ++ )
{
if (i - rabbitList[j].BornMonth == 2 ) // 出生后两个月生一个兔子
{
Rabbit rabitn
= new Rabbit(i);
rabbitList.Add(rabitn);
}
else if (i - rabbitList[j].BornMonth >= 3 ) // 出生后三个月死亡
{
rabbitList.RemoveAt(j);
}
}
}

int rabbitNum = rabbitList.Count; // 最终结果 的一半(一对,按一个算的)


全当娱乐,这个题目有意思~
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值