福兰德市的奶牛

  • 本文关键字:德市 java fibonacci
  • 更新时间 :
  • 英文 :


我正在经历这个问题-

福兰德市的奶牛是有趣的动物。他们的一个 特产与生育后代有关。福兰的一头牛 在两岁时生产第一头小牛(母小牛(, 继续生产其他小牛(每年一头母牛(。

现在农民哈罗德想知道他会有多少只动物 N年的结束,如果我们假设没有一头小牛死亡,给定 最初,他只有一只母牛?

输入:

第一行包含一个整数 T,表示测试次数 例。测试用例的每一行都包含一个整数 N,作为 在问题中描述。

输出:

对于每个测试用例,在新行中打印预期的动物数量 N年的结束

我通过下面的代码解决了这个问题-

public static void main (String[] args)
{
Scanner ab=new Scanner(System.in);
int t=ab.nextInt();  //number of test cases
for (int i=0;i<t;i++)
{
int n=ab.nextInt(); //years
int arr[]=new int[n];
arr[0]=1;
arr[1]=2;
if(n>2)
{
for(i=2;i<n;i++)
{
arr[i]=arr[i-1]+arr[i-2];
}
}
System.out.println(arr[arr.length-1]);

}
}

但是当我在网上搜索时,他们在网上给出了一个更复杂的解决方案——

https://hackerranksolutionc.blogspot.in/2017/10/cows-of-fooland.html

我尝试匹配输出,发现结果对于小数字是相同的,但对于非常大的数字是不同的。

我想知道我的解决方案有什么问题吗?

如果预期的时间复杂度为O(log N).,您的解决方案将不起作用 您可以将递归方程转换为矩阵形式,并使用矩阵幂求解。

对于更通用的版本,请 https://www.spoj.com/problems/SEQ/解决此问题

最新更新