算法:
给定一个数字n,大小为n的所有二进制数的列表(L(N))可以按以下方式从L(n-1)中计算:
例如,如果是n=2,我们可以通过以下方式获得大小为2的所有二进制数字的列表:
问题陈述:给定一个数字n,查找n个二进制数的列表。
解决方案:如果n小于20,则简单递归或非递归解决方案有效。
问:如果通过一个更大的数字,比如40并超过内存限制,我的代码就会失败。
为什么?-因为如果一个数字是40,那么二进制数的总数将是幂(2,40),这是巨大的(1048576* 1048576)。那么,有什么更好的算法或方法来解决上述问题呢?
发布于 2017-05-01 10:41:45
您可以做的是只存储第一个n号码。似乎在每种情况下,您只需要首先使用n-1数字来反转并附加'1's才能得到正确的输出。
https://stackoverflow.com/questions/43593588
复制相似问题