トピック:
牛毎年生まれた牛は、3年後の新しい生まれの牛の成長は、それが死ぬことはないと仮定すると、年間生牛することができます。最初の牛農場は二年目から、成熟していて、生の牛の雌牛は、N年の牛の数を求めて、始めました。
牛は、法律見つけることができる前に、年の数によって例示される:3年前、牛の数は四年から、それぞれ1,2,3ある満たすF(N)= F(N -1)+ F( N-3)。間で
F(N)は、今年の牛の数、と言っF(N-1)は牛の最後の数を表し、F(N-3)は 3年前表し、生まれたばかりの牛はすでに、牛が3年前に誕生したこと、出産開始することができます番号。
コードは以下の通りであります:
package com.gxu.dawnlab_algorithm8;
/**
* 母牛问题
* @author junbin
*
* 2019年7月12日
*/
public class Cow {
//递归求解
public static int cowNumber1(int n) {
if (n < 1) {
return 0;
}
if (n == 1 || n == 2 || n == 3) {
return n;
}
return cowNumber1(n - 1) + cowNumber1(n - 3);
}
//非递归求解
public static int cowNumber2(int n) {
if (n < 1) {
return 0;
}
if (n == 1 || n == 2 || n == 3) {
return n;
}
int res = 3;
int pre = 2;
int prepre = 1;
int tmp1 = 0;
int tmp2 = 0;
for (int i = 4; i <= n; i++) {
tmp1 = res;
tmp2 = pre;
res = res + prepre;
pre = tmp1;
prepre = tmp2;
}
return res;
}
public static void main(String[] args) {
int n = 20;
System.out.println(cowNumber1(n));
System.out.println(cowNumber2(n));
}
}
高度な問題:
各牛はN、牛の数を求めて、10年生きることができます。
この問題は解決される必要があります。