1. 程式人生 > >五十道程式設計小題目解答版——(第一篇)

五十道程式設計小題目解答版——(第一篇)

偶然看到有五十道程式設計題目的帖子,就拿來練練:原帖地址為:http://m.blog.csdn.net/article/details?id=7882441

【第一題】

題目:古典問題:有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一
對兔子,假如兔子都不死,問每個月的兔子總數為多少? 
1.程式分析: 兔子的規律為數列1,1,2,3,5,8,13,21.... 

/**
 *@Description:題目:古典問題:有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,
 假如兔子都不死,問每個月的兔子總數為多少? 
        程式分析: 兔子的規律為數列1,1,2,3,5,8,13,21.... 
 *@author :Lanting
 */


import java.util.*;
class RabbitSum
{
public static void main(String[] args) 
{
List<Rabbit> rl=new ArrayList<Rabbit>();
rl.add(new Rabbit());/*只有父親兔子剛出生的時候是0,第一次遍歷時年齡變成了1。*/
for(int i=1;i<9;i++)//所有的兔子都隨著月份的增加而變大。
{
int j=0;
Iterator<Rabbit> it=rl.iterator();
while(it.hasNext())
{
Rabbit rabbit=it.next();
rabbit.ageIncrease();
if(rabbit.getAge()>=3)
{
j++;
}
}
for(;j>0;j--)
{
rl.add(new Rabbit(1));//在新一次的遍歷中應該有幾個兔子已經一歲了
}
System.out.println(rl.size());//將新出生的兔子加上,則為總數。
}
}
}
class Rabbit
{
private int age=0;
public Rabbit(){}
public Rabbit(int i)
{
this.age=i;
}
public void ageIncrease()
{
age++;
}
public int getAge()
{
return age;
}
}

表示看到題時懵逼了一會,一個勁地在分析資料的變化,最後才反應過來可以用for迴圈來模擬生長過程

Rabbit類的封裝,以及sum的計算對是解決問題的關鍵