我想要一个算法在问题中给出的30秒内生成recamans术语!
Java代码:
int a0=0;
int a1;
System.out.println("Enter the term for which Recman sequence need to be calculated");
int n=Integer.parseInt(bfr.readLine());
list.add(a0);
for(int i = 1; i <= n; i++)
{
a1 = a0 - i;
if(a1 > 0 && !list.contains(a1))
{
a0 = a1;
list.add(a0);
}
else
{
a1 = a0 + i;
a0 = a1;
list.add(a0);
}
System.out.println(a0);
}
System.out.println("The" + n + "th term is " + a0);
}
}
程序无限期运行,是否有任何替代算法在30秒内生成结果?
答案 0 :(得分:0)
将您的列表更改为HashMap<Integer, Integer>
这应该加快速度。 HashMap
将索引N
映射到序列元素a[N]
另外,看看是否有溢出,即如果Integer
类型为
足够大,可以生成你想要的术语。
从我在这里看到的,似乎这个序列没有
快速成长。所以我怀疑你会溢出
对于合理大小的N.
答案 1 :(得分:0)
当然:不要使用清单;相反,使用支持快速查找的集合数据结构。您当前实现的罪魁祸首可能是list.contains(a1))
部分。