【发布时间】:2018-05-19 08:31:54
【问题描述】:
我遇到了这个问题-
FooLand 城市的奶牛是有趣的动物。他们的一个 专业与生产后代有关。 FooLand的一头牛 两岁时产下第一头小牛(雌性小牛),并且 继续生产其他小牛(一年一头雌性小牛)。
现在农夫哈罗德想知道他有多少只动物 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
我尝试匹配输出,发现结果对于小数字是相同的,但对于非常大的数字是不同的。
我想知道我的解决方案有什么问题吗?
【问题讨论】:
-
使用调试器逐一检查这两个程序,计算出结果不同的值。
-
@AndyTurner 这两个程序的算法完全不同..我想知道我的方法是否正确?
-
但他们声称要解决同样的问题。您应该弄清楚这两种解决方案之间的关系。例如,您可以查看 N=0、N=1、N=2 等的答案。请注意,这并不能告诉您是否正确;为此,您实际上必须考虑结果是否是您在数学上所期望的。
-
正确答案可能是 1,因为只有母牛会繁殖是不寻常的......
-
我的猜测是,对于“非常大的数字”,您会在两者之间的某个地方出现整数溢出。但是如果没有MCVE,我们怎么知道。