package com;
import java.util.Vector;

/*
 * 題目:古典問題:有一對兔子,從出生后第3個(gè)月起每個(gè)
 * 月都生一對兔子,小兔子長到第三個(gè)月后每個(gè)月又生
 * 一對兔子,兔子的壽命都是10個(gè)月,問每個(gè)月的兔子總數(shù)為多少?
*/

public class Test2{
    
//容器,存儲存活的兔子對
    private Vector vector = new Vector();
    
//編號
    private int No = 0;
    
//構(gòu)造函數(shù)
    public Test2()
    
{
        InnerClass ic 
= new InnerClass();
        ic.setNo(No
++);
        vector.add(ic);
        
    }

    
public void born()
    
{
        InnerClass ic 
= new InnerClass();
        ic.setNo(No
++);
        vector.add(ic);
    }

    
//內(nèi)部類
    class InnerClass
    
{
        
private int no = 0;
        
private int life = 0;
        
public void setNo(int no)
        
{
            
this.no = no;
        }

        
public void setLife(int life)
        
{
            
this.life = life;
        }

        
public int getNo()
        
{
            
return this.no;
        }

        
public int getLife()
        
{
            
return this.life;
        }

    }

    
public int calculate()
    
{
        
//設(shè)置20個(gè)月內(nèi)每個(gè)月的兔子數(shù)
        int Max = 20;
        
//初始為2只兔子
        int sum = 2;
        
while(Max > 0)
        
{
            
for(int i = 0; i < vector.size(); i++)
            
{
                InnerClass ic 
= (InnerClass)vector.elementAt(i);
                
int life = ic.getLife();
                life
++;
                
if(life < 3)
                
{
                    
//do nothing
                    ic.setLife(life);
                }

                
else//可以生小兔子了
                {
                    born();
                }

                
if(life >= 10)//必須死亡
                {
                    vector.removeElementAt(i);
                }

            }

            System.out.println(
""+(20 - Max) +"月兔子數(shù)量: "+vector.size()*2);
            Max
--;
        }

        
return 0;
    }

    
    
public static void main(String args[])
    
{
        Test2 t2 
= new Test2();
        t2.calculate();
    }

}