2011-05-03 34 views
-2

earlyer我发布第1部分,并得到了一些有趣的responces打印一系列数字优化部分的2

print a series of numbers optimization part 1

这里是另一种方式,你可以有计划打印重复的一系列数字到屏幕上,这里的目标是让最efficiant /最快的算法

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

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

忽略实际打印数量产生任何额外的开销,因为这是没有问题的目的

一个布尔条件语句(而真)是必需的无限循环是必需的,不管你做什么解决办法,这样你就可以忽略太

该解决方案使用内存为11个INT变量,否则只有它一次简单的计算和一次变量赋值。

那么这将是解决infinate数列系列问题最有效的方法吗?

+0

可能重复[打印一系列数字优化第1部分](http://stackoverflow.com/questions/5767916/print - 一系列数字优化 - 第1部分) – 2011-05-03 01:18:42

+1

@约翰这显然是一个后续问题.... – corsiKa 2011-05-03 01:20:41

+0

它会做一些讨厌的溢出,因为该数组是9个元素长,你指的是索引在第9位,而最后一位在第8位。 – Dani 2011-05-03 01:28:42

回答

2

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

解决数组中涉及到乘法。它本质上是

destinationAddress = baseAddressOfArray + indexRequested * sizeof(elementOfArray) 

我认为最有效的方法是缓存一个迭代的串并简单地吐出这串了一遍又一遍。我不是在我的确切的C + +语法,它会像

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

我认为这不是OP的意思。 – Dani 2011-05-03 01:29:44

+0

@Dani很难确切地说出OP的含义,非常诚实。 – corsiKa 2011-05-03 01:32:55