#自己瞎写的,一点也不完美,仍留有一些小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')
Rosalind第24题——ros_bio24_LGIS
最新推荐文章于 2021-08-17 22:40:00 发布