爱奇艺笔试编程三题

1,括号深度,遇到左括号+1,右括号-1
import sys
if __name__ == "__main__":
    s = sys.stdin.readline().strip()
    count,maxc = 0,0
    for i in range(len(s)):
        if(s[i]=='('):
            count += 1
            if(count > maxc):
                maxc = count
        if(s[i] == ')'):
            count -= 1
    print(maxc)
2.最多的选择方法,先排序,再计算
import sys
if __name__ == "__main__":
    n = int(sys.stdin.readline().strip())
    line = sys.stdin.readline().strip()
    values = list(map(int, line.split()))
    values.sort()
    result = 1
    for i in range(len(values)):
        if(values[i] < i+1):
            result = 0
            break
        else:
            result *= values[i]-i
    print(result)
3.最长子序列的平方串,先拆分成左右两个子串,判断子串的最大长度平方串
import sys
def MaxSub(s1,s2):
    if(len(s1)==0 or len(s2) == 0):
        return 0
    maxtrix = []
    for i in range(len(s1)):
        l = []
        for j in range(len(s2)):
            l.append(0)
        maxtrix.append(l)
    
    for i in range(len(s1)):
        for j in range(len(s2)):
            if(s1[i] == s2[j]):
                maxtrix[i+1][j+1] = 1+ maxtrix[i][j]
                print(maxtrix)
            else:
                maxtrix[i+1][j+1] = max(maxtrix[i][j+1],maxtrix[i+1][j])
                print(maxtrix)
    return maxtrix[-1][-1],maxtrix
if __name__ == "__main__":
    s = sys.stdin.readline().strip()
    maxl = 0
    for i in range(1,len(s)):
        c = MaxSub(s[:i],s[i:])
        if(c > maxl):
            maxl = c
    print(maxl*2)

全部评论
括号深度以为是求子序列和的翻版,结果竟然这么简单,浪费了10分钟。。。
点赞 回复 分享
发布于 2017-09-10 21:06

相关推荐

06-10 21:15
门头沟学院 Java
宁阿:好多这种没🧠的公司,他们估计都不知道毕业的人不能给安排实习岗
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

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