趋势0917B

题目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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值