蓝桥杯之整数删除问题
今日刷题 在绞尽脑汁完成代码后 使用测试用例也输出了目标结果 但是提交的时候怎么都不对 十个测试用例都提示段错误 请各位老哥帮忙看一下我的代码哪里有问题
题目要求是输入给定一个长度为 N 的整数数列:N为5 输入1 4 2 8 7。你要重复以下操作 K 次:
每次选择数列中最小的整数(如果最小值不止一个,选择最靠前的),将其删除。并把与它相邻的整数加上被删除的数值。输出 K 次操作后的序列。
输入格式
第一行包含两个整数 N 和 K。
第二行包含 N 个整数 类似这样的N为5 输入1 4 2 8 7
输出格式
输出 N − K 个整数,中间用一个空格隔开,代表 K 次操作后的序列。
样例输入
5 3
1 4 2 8 7
输出
17 7
import os
import sys
# 请在此输入您的代码
class Node:
def __init__(self, item):
self.item = item
self.next = None
self.pare = None
def plus_lian(lst):
head = Node(lst[0])
tail = head
for i in lst[1:]:
node = Node(i)
tail.next = node
node.pare = tail
tail = node
return head
def soul(n, k, lst):
lian = plus_lian(lst)
for i in range(k):
current = lian
min_node = lian
while current:
if current.item < min_node.item:
min_node = current
current = current.next
n = min_node.item
if min_node.pare:
min_node.pare.item += n
if min_node.next:
min_node.next.item += n
if min_node.pare and min_node.next:
min_node.next.pare = min_node.pare
min_node.pare.next = min_node.next
elif min_node.next:
min_node.next.pare = None
lian = min_node.next
elif min_node.pare:
min_node.pare.next = None
m=[]
while lian:
m.append(lian.item)
lian=lian.next
l = len(m)
for i in range(l - 1):
print(m[i], end=' ')
print(m[l - 1])
n1, k1 = map(int, input().split(' '))
li1 = list(map(int, input().split(' ')))
soul(n1,k1,li1)