【发布时间】:2013-02-26 23:22:55
【问题描述】:
打印所有可能的 8 位数字的算法是否需要 8 个 for 循环?即 10 次幂 n 时间复杂度。有没有办法可以减少循环次数?
【问题讨论】:
标签: algorithm random numbers time-complexity
打印所有可能的 8 位数字的算法是否需要 8 个 for 循环?即 10 次幂 n 时间复杂度。有没有办法可以减少循环次数?
【问题讨论】:
标签: algorithm random numbers time-complexity
有没有办法减少循环次数?
是的:
printf("00000000\n");
printf("00000001\n");
printf("00000002\n");
printf("00000003\n");
....
没有循环。只是打字很多。
【讨论】:
让我们试试单循环
int i;
for (i = 10000000; i < 100000000; i++)
{
printf("%d\n", i);
}
(假设您的意思是十进制表示、c 语言和以非零数字开头的数字)
如果你想打印所有的数字,你不会得到任何加速算法。
【讨论】:
不,没有办法降低复杂性。要生成 10^n 个输出,您需要迭代 10^n 次。
【讨论】:
伪代码...
for val in (10000000..99999999)
display val
是什么让您认为需要 8 个循环?
【讨论】: