京东笔试算法题

1.前缀切分后0与1比例相同
import sys

n = int(sys.stdin.readline())
s = [int(xfor x in list(sys.stdin.readline().strip())]

def solution(s):
    from collections import defaultdict
    dic = defaultdict(int)
    n = len(s)

    def gys(x1x2):
        if x1 == 0 and x2 > 0:
            return (0,1)
        elif x1 > 0 and x2 == 0:
            return (10)
        elif x1 ==0 and x2 == 0:
            return (0,0)
        
        ab = min(x1x2), max(x1,x2)
        while a > 0:
            tmp = b % a
            b = a
            a = tmp
        return (x1//bx2//b)
    
    rs = [1-x for x in s]

    cuSum1 = s[:1]
    for i in range(1,n):
        cuSum1.append(cuSum1[-1] + s[i])
    
    cuSum0 = rs[:1]
    for i in range(1,n):
        cuSum0.append(cuSum0[-1] + rs[i])
    
    ratio_list = [gys(x1,x2for x1,x2 in zip(cuSum0cuSum1)]

    res = []
    for ratio in ratio_list:
        dic[ratio] += 1
        res.append(str(dic[ratio]))
    
    return ' '.join(res)

print(solution(s))

2.n竹子,a,b,c段,最多几段
背包问题,注意下初始值
import sys

tmp = [int(xfor x in sys.stdin.readline().strip().split(' ')]
nabc = tmp

def solution(nabc):
    dp = [-float('inf')] * (n+1)
    dp[0] = 0
    for w in [a,b,c]:
        for i in range(wn+1):
            dp[i] = max(dp[i], dp[i-w]+1)
    
    return dp[-1]

print(solution(7,4,2,4))

#京东笔试##京东##笔试题目#
全部评论
第二题一样的思路,不过我的初始值设置是0,就过了36%。。。  能说明下为啥吗大佬
点赞 回复 分享
发布于 2021-08-21 21:03
第二题dp【i】计算这步,两个都是负无穷时候,计算不出来值呢
点赞 回复 分享
发布于 2021-08-21 21:08
第一题什么鬼。。。
点赞 回复 分享
发布于 2021-08-21 21:09
大佬第一题啥思路,能讲讲吗
点赞 回复 分享
发布于 2021-08-21 21:12
第一题真的ac了嘛?
点赞 回复 分享
发布于 2021-08-21 21:57
大佬,请教下,我下面的for初始值设置1开始,为啥要从w开始呢?和dp表设置float('-inf&(835)#39;)有关系么?
点赞 回复 分享
发布于 2021-08-21 22:17

相关推荐

10-09 09:39
门头沟学院 C++
HHHHaos:这也太虚了,工资就一半是真的
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
09-30 19:49
起名星人:蛮离谱的,直接要求转投销售
投递汇川技术等公司10个岗位
点赞 评论 收藏
分享
5 9 评论
分享
牛客网
牛客企业服务