vivo,秋招算法笔试

第一题 去括号
AC 100%
def solution(s):
    # TODO Write your code here
    s = s.replace('()', '')
    s = s.replace('0', '')
    cnt = 0
    while '()' in s:
        s = s.replace('()', '')
        cnt += 1
    return cnt


if __name__ == '__main__':
    s = input()
    print(solution(s))

第二题 服务器
没运行,不知道对不对
def solution(total_disk, total_memory, app_list):
    # TODO Write your code here
    size = len(app_list)
    if size == 0:
        return 0
    dp = [[[0 for _ in range(total_memory + 1)] for _ in range(total_disk + 1)] for _ in range(size)]

    for i in range(total_disk+1):
        for j in range(total_memory+1):
            if app_list[0][0] <= i and app_list[0][1] <= j:
                dp[0][i][j] = app_list[0][2]

    for k in range(1, size):
        for i in range(total_disk + 1):
            for j in range(total_memory + 1):
                if app_list[0][0] <= i and app_list[0][1] <= j:
                    dp[k][i][j] = max(dp[k][i][j], app_list[0][2]+dp[k-1][i-app_list[0][0]][j-app_list[0][1]])
    return dp[size-1][total_disk][total_memory]

if __name__== "__main__":
    input1 = [x for x in input().strip().split(' ')]
    total_disk = int(input1[0])
    total_memory = int(input1[1])
    app_list = [[int(i) for i in x.strip().split(',')] for x in input1[2].strip().split('#')]
    print(solution(total_disk, total_memory, app_list))



第三题:消消乐
AC 50%  知道自己的投机取巧的办法
def solution(boxes):
    # TODO Write your code here
    cnt = [0] * 10
    for i in boxes:
        cnt[i] += 1
    res = [x**2 for x in cnt]
    return sum(res)


if __name__ == '__main__':
    x = input()
    boxes = list(map(int,x.split()))
    print(solution(boxes))


#秋招##笔试题目##题解##算法工程师#
全部评论
请问vivo笔试系统是牛客的还是像提前批一样是它自己的?
点赞 回复 分享
发布于 2019-09-11 18:56
s = s.replace('()', '') 这里应该套一个`while`循环吧?针对这种的`(((())))`
点赞 回复 分享
发布于 2019-09-11 19:53
不是一套题??我怎么只选择题和简答题
点赞 回复 分享
发布于 2019-09-11 19:55
我第一题用栈做的。 第二题背包问题变种,AC四十多,后来才发现同一程序最多选一个......没时间改了 第三题完全没时间... 还是要多练啊
点赞 回复 分享
发布于 2019-09-11 20:26
第二个题用记忆化递归做的,刚做出来,直接写dp的方法掌握不了,。,, def solution(total_disk, total_memory, app_list):     n = len(app_list)     dp = [[[-1 for i in range(total_memory + 1)] for i in range(total_disk + 1)] for i in range(n)]     # 状态转移方程     # dp[i][v][u] 前i件物品 在 占用 v 容量的 disk 和 u 容量的 memory 时,所能获取的最大价值     # dp[i][v][u] = max( dp[i-1][v][u], app_list[i] + dp[i-1] [v-app_list[i][0]] [u-app_list[i][1] )     # i y用下标从0,...,i-1个品     help_dp(total_disk, total_memory, app_list, dp, n-1)     print(dp)     return dp[n-1][total_disk][total_memory] def help_dp(disk, memory, app_lsit, dp, index):     if index-1 < 0:         return 0     if disk <= 0 or memory <= 0:         return 0     if dp[index][disk][memory] != -1:         return dp[index][disk][memory]     res = help_dp(disk, memory, app_list, dp, index-1)     res = max(res, app_list[index][2] + help_dp(disk - app_list[index][0], memory-app_list[index][1], app_list, dp, index-1))     dp[index][disk][memory] = res     return dp[index][disk][memory]
点赞 回复 分享
发布于 2019-09-11 21:52
第二题dfs只a了63,不知道错哪了😂
点赞 回复 分享
发布于 2019-09-12 13:20
第一题没那么复杂吧 😂 遍历字符串 检测到( 时 res+=1 检测到)res-=1 检测0就break😂
点赞 回复 分享
发布于 2019-09-12 14:50

相关推荐

11-04 21:17
江南大学 Java
穷哥们想卷进大厂:肯定会问技术呀,面试你的可能是别人
点赞 评论 收藏
分享
11-09 12:17
清华大学 C++
out11Man:小丑罢了,不用理会
点赞 评论 收藏
分享
评论
1
15
分享
牛客网
牛客企业服务