打印一系列数字优化第2部分

时间:2011-05-03 01:13:19

标签: c++ algorithm optimization addition

早在我发布第1部分并得到一些有趣的回应

print a series of numbers optimization part 1

这是另一种让程序在屏幕上打印一系列重复数字的方法,这里的目标是制作最有效/最快的算法

int series[] = [2,3,4,5,6,7,8,9,1]
int i = 9;

while(true)
{
    print(series[i])
    i = series[i] - 1;
} 

当然会忽略实际打印数字所产生的任何额外开销,因为这不是问题的目的

无论你采用什么解决方案,都需要一个布尔条件语句(同时为true)无限循环,所以你也可以忽略它

这个解决方案使用11个int变量的内存,但是每次迭代只进行一次简单计算和一次变量赋值。

那么这是解决无限数字序列问题的最有效率的方法吗?

1 个答案:

答案 0 :(得分:2)

我想说这不是最有效的方法。

解决数组涉及倍增。它基本上是

destinationAddress = baseAddressOfArray + indexRequested * sizeof(elementOfArray)

我认为最有效的方法是缓存一次迭代的字符串并简单地一遍又一遍地吐出该字符串。我不是用我确切的C ++语法,它就像

string s = "123456789";
while(true) {
    print(s);
}