爱奇艺笔试编程三题
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)
科大讯飞公司氛围 474人发布
