java 时钟 算法分析,除以N二进制时钟序列算法?

我不太清楚如何描述我的意思,所以让我试着通过例子解释(忍受我) .

当你只是递增一个整数时,你得到一个像这样的二进制序列(假设这个问题为8位):

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 1

0 0 0 0 0 0 1 0

0 0 0 0 0 0 1 1

0 0 0 0 0 1 0 0

0 0 0 0 0 1 0 1

0 0 0 0 0 1 1 0

0 0 0 0 0 1 1 1

0 0 0 0 1 0 0 0

0 0 0 0 1 0 0 1

0 0 0 0 1 0 1 0

0 0 0 0 1 0 1 1

0 0 0 0 1 1 0 0

0 0 0 0 1 1 0 1

0 0 0 0 1 1 1 0

0 0 0 0 1 1 1 1

0 0 0 1 0 0 0 0

0 0 0 1 0 0 0 1

0 0 0 1 0 0 1 0

0 0 0 1 0 0 1 1

0 0 0 1 0 1 0 0

0 0 0 1 0 1 0 1

0 0 0 1 0 1 1 0

0 0 0 1 0 1 1 1

0 0 0 1 1 0 0 0

0 0 0 1 1 0 0 1

0 0 0 1 1 0 1 0

0 0 0 1 1 0 1 1

0 0 0 1 1 1 0 0

0 0 0 1 1 1 0 1

0 0 0 1 1 1 1 0

0 0 0 1 1 1 1 1

[ ... etc ... ]

可视化的一种方法是每列代表一个“时钟” . 每个时钟/列的频率是其右邻居的一半 .

所以最右边的时钟有一个 0 后跟一个 1 等 . 下一个时钟有两个 0 s后跟两个 1 等等等......

我对一系列二进制字符串很感兴趣,其中每个时钟都是其邻居的整数除法 .

所以最右边的时钟仍然是一个 0 ,一个 1 ,下一个时钟仍然是两个 0 s,两个 1 s,但第三个时钟是三个 0 s和三个 1 等等 .

而不是 /1 /2 /4 /8 /16 ... 现在 /1 /2 /3 /4 /5 ... .

序列现在看起来像这样:

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 1

0 0 0 0 0 0 1 0

0 0 0 0 0 1 1 1

0 0 0 0 1 1 0 0

0 0 0 1 1 1 0 1

0 0 1 1 1 0 1 0

0 1 1 1 1 0 1 1

1 1 1 1 0 0 0 0

1 1 1 1 0 1 0 1

1 1 1 0 0 1 1 0

1 1 1 0 0 1 1 1

1 1 0 0 1 0 0 0

1 1 0 0 1 0 0 1

1 0 0 0 1 0 1 0

1 0 0 1 1 1 1 1

0 0 0 1 0 1 0 0

0 0 0 1 0 1 0 1

0 0 1 1 0 0 1 0

0 0 1 1 0 0 1 1

[ ... etc ... ]

Question :是否有一个操作/算法可以在 i-1 给出 i 的值?

换句话说,让's say I' m在第4步( 0 0 0 0 0 1 1 1 ) . 我可以对此数字执行某些操作以获取第5步( 0 0 0 0 1 1 0 0 )的值,并且类似地执行任何其他步骤吗?

在除以2的情况下,你只需增加数字( i++ ),但在除以N的情况下,我似乎无法找出从一个到另一个的类似方式 . 我错过了一些明显的东西吗

我已经尝试将排序转换为十进制,但该模式是 0, 1, 2, 7, 12, 29, 58, etc ,这对我来说并不突出 .

我现在正在做的蛮力方式是我有一个计数器阵列(每个列/时钟一个),当达到相应列的“周期”时,我独立地重置每个计数(因此第一列为2) ,3为下一个,等) . 但这感觉很难看 .

我喜欢直接在号码上这样做而不需要一系列计数器 . 这甚至可能吗?这是一个已知的序列吗?我甚至不确定谷歌要说实话 . 我很欣赏这方面的任何线索 . 我很乐意在一些指导下走下兔洞 .

UPDATE

根据@ borrible的观察,对于给定的 i , i-1 有多个值,所以事实证明我原来问题的解决方案是模棱两可的 . 所以我将扩展我的问题以允许 i 作为输入(除了 i-1 th值 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值