Rosalind第24题——ros_bio24_LGIS

如果第一次阅读,请查看写在前面

#自己瞎写的,一点也不完美,仍留有一些小bug,可以参考B站未琢的动态规划的!!!
#DPDPDP!!!

n = 5
dataset = [5, 1, 4, 2, 3]
#dataset = [8, 2, 1, 6, 5, 7, 4, 3, 9]

#降序
seq = []
descend = []
for i in range(len(dataset)): # 原始数据集
    all_seq = []
    start = temp = dataset[i] # 开头元素
    seq.append(start)
    data = dataset[i+1:] #剩余的数据
    for j in range(len(data)): #遍历剩余数据
        if data[j] < start: #小于开头元素
            if data[j] < temp:
                seq.append(data[j])
                temp = data[j]
                for li in all_seq: # 4与3出现在[8, 2, 1, 6, 5, 7, 4, 3, 9]中的7之后,通过此循环将4,3插入列表
                    if len(li) == 0:
                        continue
                    elif data[j] < min(li):
                        li.append(data[j])
            else:
                all_seq.append(seq)
                seq = [start]
                seq.append(data[j])
                temp = data[j]
            if data[j] == data[-1]: # 如果最后一个元素还是小于开头元素,不会进入下面的else语句,即将下面的代码复制上来
                all_seq.append(seq)
                seq = []
                for x in all_seq:
                    descend.append(x)
        else:
            all_seq.append(seq)
            seq = []
            for x in all_seq:
                descend.append(x)

#升序,与降序基本一样
seq = []
ascend = []
for i in range(len(dataset)):
    all_seq = []
    start = temp = dataset[i]
    seq.append(start)
    data = dataset[i+1:]
    for j in range(len(data)):
        if data[j] > start:
            if data[j] > temp:
                seq.append(data[j])
                temp = data[j]
                for li in all_seq:
                    if len(li) == 0:
                        continue
                    elif data[j] > max(li):
                        li.append(data[j])
            else:
                all_seq.append(seq)
                seq = [start]
                seq.append(data[j])
                temp = data[j]
            if data[j] == data[-1]:
                all_seq.append(seq)
                seq = []
                for x in all_seq:
                    ascend.append(x)
        else:
            all_seq.append(seq)
            seq = []
            for x in all_seq:
                ascend.append(x)

d = ' '.join([str(i) for i in max(descend, key=len)])
a = ' '.join([str(i) for i in max(ascend, key=len)])
print(d, a, sep='\n')

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值