2301_77135373 2024-01-26 19:06 采纳率: 33.3%
浏览 13
已结题

蓝桥杯之python算法问题

蓝桥杯之整数删除问题
今日刷题 在绞尽脑汁完成代码后 使用测试用例也输出了目标结果 但是提交的时候怎么都不对 十个测试用例都提示段错误 请各位老哥帮忙看一下我的代码哪里有问题
题目要求是输入给定一个长度为 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)

  • 写回答

2条回答 默认 最新

  • micthis 2024-01-26 19:49
    关注
    def sol(n=5,k=3,l=[1,4,2,8,7]):
        for i in range(k):
            m,mi=min(l),l.index(min(l))
            if mi-1>=0:
                l[mi-1]+=m
            if mi+1<len(l):
                l[mi+1]+=m
            l.pop(mi)
        print(' '.join(map(str,l)))
    
    sol()
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月4日
  • 已采纳回答 2月25日
  • 创建了问题 1月26日

悬赏问题

  • ¥15 C++为什么这个代码没报错运行不出来啊
  • ¥15 第一行输入n,第二行输入a b c输出的字符向后平移n个位置,当移动到z时,重新返回a开始
  • ¥15 为什么跑这个代码,文件显示不在呀
  • ¥15 一道ban了很多东西的pyjail题
  • ¥15 关于#r语言#的问题:如何将生成的四幅图排在一起,且对变量的赋值进行更改,让组合的图漂亮、美观@(相关搜索:森林图)
  • ¥15 C++识别堆叠物体异常
  • ¥15 微软硬件驱动认证账号申请
  • ¥15 GPT写作提示指令词
  • ¥20 根据动态演化博弈支付矩阵完成复制动态方程求解和演化相图分析等
  • ¥15 华为超融合部署环境下RedHat虚拟机分区扩容问题