【问题标题】:print a series of numbers optimization part 2 [closed]打印一系列数字优化第 2 部分 [关闭]
【发布时间】:2011-05-03 01:13:18
【问题描述】:

早些时候我发布了第 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;
} 

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

无论你做什么解决方案,都需要一个布尔条件语句(当为真),所以你也可以忽略它

此解决方案为 11 个 int 变量使用内存,但除此之外,它仅执行一次简单计算和每次迭代的一次变量分配。

那么这是解决无限数序列问题最省时的方法吗?

【问题讨论】:

  • @John 这显然是一个后续问题......
  • 它会造成一些令人讨厌的溢出,因为数组有 9 个元素长,并且您指的是位置 9 的索引,而实际上最后一个位于位置 8。
  • 这些愚蠢的问题有什么意义?我可以想到一百万个微不足道的问题,并询问如何对同样微不足道的解决方案进行微优化。
  • 微优化此代码毫无意义。大部分时间将花费在 I/O 上,以便将这些内容输出到屏幕上。

标签: c++ algorithm optimization addition


【解决方案1】:

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

在寻址数组时涉及乘法。本质上是

destinationAddress = baseAddressOfArray + indexRequested * sizeof(elementOfArray)

我认为最有效的方法是缓存一次迭代的字符串,然后一遍又一遍地吐出该字符串。我不了解我的确切 C++ 语法,可能是这样的

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

【讨论】:

  • 我认为这不是 OP 的意思。
  • @Dani 说实话,很难准确说出 OP 的意思。
猜你喜欢
  • 2011-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-13
  • 2019-10-03
  • 1970-01-01
  • 2019-05-15
  • 2010-09-23
相关资源
最近更新 更多