鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: zltzlt

[已解决]Python:每日一题 346

[复制链接]
发表于 2020-3-8 20:47:47 | 显示全部楼层
蒋博文 发表于 2020-3-8 20:38
https://baike.so.com/doc/5389470-5626050.html
这里面有斐波那契数列的公式和思想讲解,看完后就应 ...

上面代码里的abc分别代表什么呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-8 22:35:53 | 显示全部楼层
对于初学者真的好难啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-9 08:08:05 | 显示全部楼层
def f346(n):
    nstr = str(n)
    nlen = len(nstr)
    res = [1]
    a = b = 1
    for i in range(nlen):
        if int(nstr[i:i+2]) < 26:
            a, b = b, a + b
        else:
            a = b
            res.append(b)
    return res[nlen-1]

评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
zltzlt + 2 + 2

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-9 13:05:25 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-9 13:05:51 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-9 13:07:29 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-9 13:08:41 | 显示全部楼层

解答错误

输入:506
输出:2
预期结果:1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-9 13:09:00 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-9 13:09:17 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-9 13:10:36 | 显示全部楼层
寻风 发表于 2020-3-8 11:30
硬给玩成了数学题,希望不要错

解答错误

输入:506
输出:2
预期结果:1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-9 13:11:24 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-9 13:12:04 | 显示全部楼层
546623863 发表于 2020-3-8 15:20
又是一道之前刷题的时候做过的题。。。。。

解答错误

输入:506
输出:0
预期结果:1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-9 13:12:38 | 显示全部楼层
TJBEST 发表于 2020-3-8 16:00
大家都这么厉害啊,我没办法 只能暴力一点了 当然我这里默认 连续1和2的个数不能太大 否则 递归就超了

36 ms
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-9 13:14:27 | 显示全部楼层

解答错误

输入:624
输出:1
预期结果:2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-9 13:14:56 | 显示全部楼层
蒋博文 发表于 2020-3-8 20:09
请求楼主测试(还好我做过 )

44 ms
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-9 13:15:43 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-9 13:33:19 | 显示全部楼层
def f346(n):
    nstr = str(n)
    nlen = len(nstr)
    res = [1]
    a = b = 1
    for i in range(nlen):
        if nstr[i:i+2] < '26':
            a, b = b, a + b
        else:
            a = b
            res.append(b)
    return res[nlen-1]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-9 14:36:06 | 显示全部楼层
本帖最后由 546623863 于 2020-3-9 14:38 编辑
zltzlt 发表于 2020-3-9 13:12
解答错误

输入:506

def fun346(num : int):
    s = str(num)
    Pway = 0
    Cway = 1
    Pnum = ""
    for Cnum in s:
        tmp = Pway
        Pway = Cway
        Cway = int(Cnum >= "0") * Cway + (9 < int(Pnum + Cnum) < 26) * tmp
        Pnum = Cnum
    return Cway


好吧,之前的题好像从1开始的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-9 17:20:27 | 显示全部楼层
zltzlt 发表于 2020-3-9 13:08
解答错误

输入:506
def solve(num):
    if not isinstance(num, int):
        return None
    
    s = str(num)
    ls = len(s)
    dp = [[0] * 2 for i in range(ls)]
    # dp[i][0]表示从左到右第i(下标)位如果不和前一位结合 有多少种可能
    # dp[i][1]表示从左到右第i(下标)位如果和前一位结合 有多少种可能   
    # 对于dp[i][0]无论前面状态如何 每一种dp[i - 1]*的状态都会有dp[i][0]的状态
    # 所以dp[i][0] = dp[i - 1][0] + dp[i - 1][1]
    # 对于dp[i][1]如果与前一位可以结合 此时前一位不能和更前一位结合 故 dp[i][1] = dp[i - 1][0]
    # 如果当前位与前一位无法结合 则dp[i][1] = 0   
    # i=0时无法与前面结合 dp[0][0] = 1 dp[0][1] = 0
    # 结果为dp[ls-1][0] + dp[ls - 1][1]
    dp[0][0] = 1
    for i in range(1, ls):
        dp[i][0] = dp[i - 1][0] + dp[i - 1][1]
        if 10 < int(s[i - 1] + s[i]) < 26:
            dp[i][1] = dp[i-1][0]
    return dp[ls - 1][0] + dp[ls - 1][1]


print(solve(506))
忘记前置0了 把‘06’算成一个数了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 14:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表