经典指数          
原因
2160
浏览数
0
收藏数
 

某星球上出现了一种怪物, 这种怪物是单亲繁殖,从出生起第3个月起每个月就能繁衍一批后代共m个,但是这种怪物很短命,生存第5个月后就会毙命。目前该星球有一个这样的怪物,请编写程序计算n个月后怪物的总数。(这里我们假定第5个月怪物繁衍后再毙命)

     举报   纠错  
 
切换
1 个答案
令f(n)作为第n个月怪物总数,令b(n)作为第n个月新增的怪物数。 则显然有b(n)=m*f(n-5)  (n>=5),当n<5的时候,b(n)=0; 并且,f(n) = b(n) + f(n-1) - b(n-5) 即,n-5个月的怪物都已经毙命,因此应该减去b(n-5)。 所以,可以用递推来解答,代码如下: public class MonstersNum {     int[][] matrix;     public int calculate(int m, int n) {         matrix = new int[n + 1][2];         matrix[0][0] = 0;         matrix[0][1] = 0;         matrix[1][0] = 1;         matrix[1][1] = 1;         for (int i = 2; i <= n; i++) {             matrix[i][1] = m * matrix[i - 2][0];             if (i < 5) {                 matrix[i][0] = m * matrix[i - 2][0] + matrix[i - 1][0];             } else {                 matrix[i][0] = m * matrix[i - 2][0] + matrix[i - 1][0] - matrix[i-5][1];             }         }         return matrix[n][0];     }     public static void main(String[] args){         MonstersNum monstersNum = new MonstersNum();         for(int i=1;i<=10;i++)             System.out.println(monstersNum.calculate(1,i));     } }
 
切换
撰写答案
扫描后移动端查看本题