| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2894 人关注过本帖, 1 人收藏
标题:求出第N个汉明数
只看楼主 加入收藏
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
结帖率:100%
收藏(1)
已结贴  问题点数:100 回复次数:3 
求出第N个汉明数
汉明数,即任意整数 n = 2^i * 3^j * 5^k  ijk为非负整数

fun(1) = (0, 0, 0) = 1
fun(2) = (1, 0, 0) = 2
fun(3) = (0, 1, 0) = 3
fun(4) = (2, 0, 0) = 4
fun(5) = (0, 0, 1) = 5
fun(6) = (1, 1, 0) = 6
fun(7) = (3, 0, 0) = 8
fun(8) = (0, 2, 0) = 9
fun(9) = (1, 0, 1) = 10
fun(10) = (2, 1, 0) = 12
2016-09-30 14:30
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:100 
i=0, j=0, k=0, a[0]=1;
2*a[0]、3*a[0]、5*a[0] 中 2*a[0] 最小,所以 a[1]=2*a[0]=2,i=1;
2*a[1]、3*a[0]、5*a[0] 中 3*a[0] 最小,所以 a[2]=3*a[0]=3, j=1;
2*a[1]、3*a[1]、5*a[0] 中 2*a[1] 最小,所以 a[3]=2*a[1]=4, i=2;
……
求 2*a[i]、3*a[j]、5*a[k] 中哪个最小,那就就是下一个fun,相应的ijk加1
2016-09-30 16:11
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 

程序代码:
def hamming(n):
    s = 1
    import collections
    q2 = collections.deque()
    q3 = collections.deque()
    q5 = collections.deque()
    for x in range(n - 1):
        q2.append(s * 2)
        q3.append(s * 3)
        q5.append(s * 5)
        s = min(q2[0], q3[0], q5[0])
        if q2[0] == s: q2.popleft()
        if q3[0] == s: q3.popleft()
        if q5[0] == s: q5.popleft()
    return s

程序代码:
def hamming(n):
    bases = [2, 3, 5]
    expos = [0, 0, 0]
    hamms = [1]
    for _ in range(1, n):
        next_hamms = [bases[i] * hamms[expos[i]] for i in range(3)]
        next_hamm = min(next_hamms)
        hamms.append(next_hamm)
        for i in range(3):
            expos[i] += int(next_hamms[i] == next_hamm)
    return hamms[-1]


[fly]存在即是合理[/fly]
2016-09-30 16:59
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:0 
数学底子差了,看不懂。
2016-10-01 16:55
快速回复:求出第N个汉明数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033811 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved