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)); } }
public class Test { public static void main(String[] args) { /* * 某星球上出现了一种怪物, 这种怪物是单亲繁殖,从出生起第3个月起每个月就能繁衍一批后代共m个,但是这种怪物很短命,生存第5个月后就会毙命。 * 目前该星球有一个这样的怪物,请编写程序计算n个月后怪物的总数。(这里我们假定第5个月怪物繁衍后再毙命) * */ Scanner scanner = new Scanner(System.in); int month = scanner.nextInt();//月数 int m = scanner.nextInt();//每次繁衍的个数 int[] arr = new int[6]; arr[1] = 1; for(int i = 4;i <= month;i++){ arr[5] = arr[4]; arr[4] = arr[3]; arr[3] = arr[2]; arr[2] = arr[1]; arr[1] = arr[3] + arr[4] + arr[5]; } int sum = 0; for(int i = 1;i < arr.length;i++){ sum += arr[i]; } System.out.println(sum); } }
int SumOFMonster(int n,int m) { vector<int> T={1,0,0,0}; vector<int> Temp; int S=0; for(int i=0;i<n;++i) { Temp=T; T[0]=m*(Temp[2]+Temp[3]); T[1]=Temp[0]; T[2]=Temp[1]; T[3]=Temp[2]; S=T[0]+T[1]+T[2]+T[3]; } return S; }
public class MonstorTest { /** * 计算怪兽在month月之后的数量 * * @param month * 月数 * @param per * 每只怪兽一次产出数 * @return */ public int monstor(int month, int per) { int amount = 0; int[] data = new int[month]; data[0] = 1; for (int i = 2; i < month; i++) { int j = i; while (j >= 0) { if (j >= i - 4 && j <= i - 2) { data[i] += data[j] * per; } if (j <= i - 4) { data[j] = 0; } j--; } } for (int in : data) { amount += in; System.out.print(in + "\t"); } return amount; } public static void main(String[] args) { System.out.println(new MonstorTest().monstor(7, 10)); } }