题目1
给定一组数(长度为N偶数),两两组成数对,例如[(2,4) (6,9) (3,10)]
找到最长的数链
数链要求(a,b),(c,d)其中c>b
def FindLongest(Li, N):
NumMin = 0
N_pre = 0
L = LengthConnect(Li, N, NumMin)
return (N-L)/2
def LengthConnect(Li, N, NumMin):
FindOrNot = False
a = 0
b = 0
NMin = sys.maxsize
for i in range(1, N, 2):
if Li[i-1] > NumMin and Li[i] < NMin:
a = Li[i]
b = Li[i-1]
NMin = Li[i]
FindOrNot = True
if FindOrNot:
Li.remove(a)
Li.remove(b)
return LengthConnect(Li, N-2, a)
else:
return N
题目2
给定一个输入,a~g是合法输入,HIJKL是非法输入,判断输入是否合法规则:
单个合法a~g
K#是合法输入,#是一个合法输入
L#¥是合法输入,#、¥是合法输入
J#%&是合法输入,#、%、¥是合法输入
def LegalInput(str):
for i in range(len(str)):
if str[i] >= 'a' and str[i] <= 'g':
if i - 1 != -1 and str[i-1] >= 'H' and str[i-1] <= 'L':
if i+1 >= len(str) or (i+1 < len(str) and str[i+1] >= 'a' and str[i+1] <= 'g') or \
(i+2 < len(str) and str[i+1] >= 'a' and str[i+1] <= 'g' and str[i+2] >= 'a' and str[i+2] <= 'g'):
return LegalInput(str[:i-1] + str[i]) or LegalInput(str[:i-1] + str[i+1:]) or LegalInput(str[:i-1] + str[i+2:])
if i - 1 == -1 and i == len(str) - 1:
return True
else:
return False
return False