笔试编程题

有选择题
三道编程题
第一题:
输入
2
1 3
2 5
第一行是有n个信封,后面的每一行是n个信封的长和宽,只有小信封的长款大小比大信封小才能套进去,问最多能套多少个信封?
import sys

if __name__ == "__main__":
    # 读取第一行的n
    n = int(sys.stdin.readline().strip())
    ans = []
    for i in range(n):
        # 读取每一行
        line = sys.stdin.readline().strip()
        # 把每一行的数字分隔后转化成int列表
        values = list(map(int, line.split()))
        ans.append(values)
    print(ans)
    ans.sort(key=lambda x: (x[0], x[1]))
    print(ans)
    dp = [0 for i in range(n)]
    for i in range(1, n):
        hope = []
        for j in range(0, i):
            if ans[i][1] > ans[j][1]:
                hope.append(dp[j]+1)
        if  len(hope)!=0:
            print(hope)
            dp[i] = max(hope)

    print(dp[-1])




第二题:

输入 数组的长度n和一个数组,全是整数,求乘积为正数的最大连续数组的长度
import sys

if __name__ == "__main__":
    # 读取第一行的n
    line = sys.stdin.readline().strip()
    values = list(map(int, line.split()))
    n = len(values)
    dp = [0]
    p = -1
    for i in range(n):
        if values[i]>0:
            dp.append(dp[-1]+1)
        elif values[i]==0:
            dp.append(0)
            p = -1
        else:
            if p!=-1:
                dp.append(dp[p-1]+dp[-1]+2)
                p = -1
            else:
                dp.append(0)
                p = i+1
    print(dp)
    print(max(dp))


这个题目的case全过,但是代码是有问题的 比如
0 0 1 1 -1 -1 -1  1 2 3 4  应该是6 但是输出4
如果牛友有很好的方法,欢迎戳我

第三题:
也是一个字符串,找到最长的回文子串
输入
5
abnca
输出 3 (a+a与a之间任意字母+a)
import sys

if __name__ == "__main__":
    line = list(sys.stdin.readline().strip())
    dp = [[1 for j in range(len(line))] for i in range(len(line))]
    for j in range(0, len(line)):
        for i in range(j-1, -1, -1):
            if j - i == 1:
                if line[i] == line[j]:
                    dp[i][j] = 2
                else:
                    continue
            else:
                for x in range(i, j ):
                    if line[x] == line[j] and j - x > 1:
                        print(x,i,j)
                        dp[i][j] = max(dp[x + 1][j - 1] + 2,dp[i][j] ,dp[i][j-1])
                    elif line[x] == line[j] and j - x == 1:
                        dp[i][j] = max(2,dp[i][j] ,dp[i][j-1])
                    else:
                        dp[i][j] = max( dp[i][j], dp[i][j - 1])
    print(dp[0][-1])

题目要求时间O(n^2) 我的方法是O(n^3) (笔试时还没写完,后面写的呜呜呜)

#笔试算法题#
全部评论
宁德时代的笔试对吧
点赞 回复 分享
发布于 2022-07-31 23:39
啊,已经笔试了啊
点赞 回复 分享
发布于 2022-07-31 21:49

相关推荐

02-01 12:05
复旦大学 Java
腾讯的提前批大概率应该是没有笔试的,但是这个时候有相当部分的同学简历估计都没有准备好,没准备好的同学也不用急,大部分都是3月之后开,这个时候开的绝大多数都是神仙打架,问的东西也比较难,打算投递的同学也多看下计算机网络和操作系统,腾讯对这部分的知识问的比较多。另外多刷下牛客的热门题库,刷题注意刷ACM模式,和牛客的周赛题,腾讯有的部门会从这里面出原题。我是@程序员花海关注我,带你了解更多校招资讯!
程序员花海:还没有来得及准备的同学可以看下学习路线:https://www.nowcoder.com/discuss/824693499982315520?sourceSSR=users算法题:https://www.nowcoder.com/feed/main/detail/20e7a999fa04485b88340a274411ca0d?sourceSSR=users八股文:https://www.nowcoder.com/discuss/833102362771251200?sourceSSR=users简历书写方式:https://www.nowcoder.com/discuss/839907820706205696?sourceSSR=users都是以前在牛客发的文章~
软开人,秋招你打算投哪些...
点赞 评论 收藏
分享
02-04 15:03
南昌大学 Java
想去三亚看海的迪恩在...:刚刚打电话了说不录取,收了学信网和身份证,入职的信息条都发给我了,这种不录取究竟何意味?
点赞 评论 收藏
分享
评论
1
8
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务