我正在经历这个问题-
福兰德市的奶牛是有趣的动物。他们的一个 特产与生育后代有关。福兰的一头牛 在两岁时生产第一头小牛(母小牛(, 继续生产其他小牛(每年一头母牛(。
现在农民哈罗德想知道他会有多少只动物 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/解决此问题