爱奇艺笔试编程三题
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)