首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在php中处理大尺寸二进制数字

问在php中处理大尺寸二进制数字
EN

Stack Overflow用户
提问于 2017-04-24 16:41:51
回答 1查看 62关注 0票数 0

算法:

给定一个数字n,大小为n的所有二进制数的列表(L(N))可以按以下方式从L(n-1)中计算:

  • 假设数组L( n-1 )包含长度为n-1的所有二进制数.
  • 反向L(n-1)并调用RL(n-1)。
  • 在L(n-1)中的所有二进制数中附加'0‘。在RL(n-1)中的所有二进制数中附加“1”。
  • 合并新追加的数组L(n-1)和RL(n-1),以获得大小为n的所有二进制数。
  • 大小写,如果是n=1,输出= 0,1。

例如,如果是n=2,我们可以通过以下方式获得大小为2的所有二进制数字的列表:

  • 设a= 0,1为大小为(2-1) = 1的二进制数的列表。
  • 设b=a= 1,0的反式。
  • 将0附加到. New =0011中的所有元素。
  • 在b.新b= 11,10中的所有元素中追加1。
  • 合并新的a和b.00,11,11,10。

问题陈述:给定一个数字n,查找n个二进制数的列表。

解决方案:如果n小于20,则简单递归或非递归解决方案有效。

问:如果通过一个更大的数字,比如40并超过内存限制,我的代码就会失败。

为什么?-因为如果一个数字是40,那么二进制数的总数将是幂(2,40),这是巨大的(1048576* 1048576)。那么,有什么更好的算法或方法来解决上述问题呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-01 10:41:45

您可以做的是只存储第一个n号码。似乎在每种情况下,您只需要首先使用n-1数字来反转并附加'1's才能得到正确的输出。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43593588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档