package 算法初级;
/**
*
* @title 母牛問題
* @description 母牛每年生一只母牛,新出生的母牛三年后每年剩一只母牛,就N年后母牛的數量。
* @thinking 1:A(1) 2: A,B(2) 3: A,B,C(3) 4:A,B,C,D(4) 5:A,B,C,D,E,F(6)
* 6:A,B,C,D,E,F,G,H,I(9) => f(n) = f(n-1) +f(n-3)
* @author xiaox
* @data 2018年5月20日
*/
public class Cow {
// O(n)
public static int cowNum(int N) {
if (N < 1) {
return 0;
}
if (N < 4) {
return N;
}
return cowNum(N - 1) + cowNum(N - 3);
}
/**
* 如果每一个牛能过10年
*
* @param N
* @return
*/
public static int cowNum1(int N) {
if (N < 1) {
return 0;
}
if (N < 4) {
return N;
}
if (N <= 10) {
return cowNum1(N - 1) + cowNum1(N - 3);
} else {
return cowNum1(N - 1) - cowNum1(N - 10) + cowNum1(N - 3) - cowNum1(N - 10);
}
}
public static void main(String[] args) {
int years = 12;
for (int i = 1; i < 20; i++)
System.out.print(i + ": " + cowNum(i) + " ");
System.out.println();
System.out.println("11: " + cowNum1(12));
}
}
母牛的数量-暴力递归
最新推荐文章于 2022-11-24 12:06:52 发布