Python解题-三角形最大周长

题目

题目描述

铁子从森林里收集了n根木棍,她开始将它们按顺序的排成一排,从左到右依次为1到n,她回想起
在数学课上老师教她的三角形知识,她开始从这些木棍中间找三根木棍来组成一个周长最大的三角形,
这时她的兄弟顺溜偷偷的溜了过来,偷走了第i根木棍,现在她想知道现在能够组成周长最大的三角形
的周长是多少?

输入描述:

第一行两个整数n和q。(1 ≤ n, q ≤ 105) 第二行n个整数表示第i根木棍的长度ai。(1 ≤ ai ≤ 109) 接下来q行,每行一个整数表示被顺溜偷走的木棍编号。注意每行的事件是独立的,也就是说每一次操作都是对于原来的n根木棍进行的。

输出描述:

对于每个询问输出一行表示答案,如果删除木棍后无法组成三角形则输出 -1 。

思路

创建两个列表,一个保存原数列,一个减少木棍,将第二个数列排序后判断最长的三个木棍能否组成三角形,能则相加

代码

不可以直接s=b,python中这样使用同一个地址,即s改变b也会改变

n,q = input().split()
b = [int(n) for n in input("数组").split()]
c = [int(n) for n in input("pop").split()]
for i in range(int(q)):
    s = []           
    for j in b:
        s.append(j)
    s.sort()
    z = int(b[int(c[i])-1])
    for g in range(len(s)):
        if s[g]==z:
            s.pop(g)
            break
    s = s[::-1]
    if int(s[0]) < int(s[1])+int(s[2]):
        print(int(s[0])+int(s[1])+int(s[2]))
    else:
        print(-1)

Python真是妙啊

发布了30 篇原创文章 · 获赞 27 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_44616044/article/details/88816264