Python|每日一练|三角形判断|sort函数:幼稚班作业

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

题目名称:幼稚班作业

时间限制:1000ms内存限制:256M

题目描述

幼稚园终于又有新的作业了。 老师安排同学用发给同学的4根木棒拼接成一个三角形。 当然按照正常的逻辑如果不能拼接成三角形。 必然要折断某个木棍来拼接三角形。 可是懒惰的小艺当然不会费力了 如果拼接不成三角形小艺就会把它拼接成类似边长 1 1 2的伪三角形。 如果伪三角形都拼接不成那就不交作业

输入描述:

输入四根木棍的长度。

输出描述:

拼接成正常三角形输出”1”,伪三角形输出”0”,否则输出”-1”

示例 

示例1

输入1 2 3 4复制

输出1

解题思路:

情况1:拼接成正常三角形(输出”1”

1、三角形只有3条边正常三角形选择3根木条即可能够满足:三角形的判断条件(三角形两边之和大于第三边,两边之差小于第三边则为正常三角形。

2、将4根木棒按由小到大排序取最短3根和最长3根(分别对应于两边之和、两边之差的最不利条件如果能够满足则任选3根均可满足正常三角形条件。

情况2:伪三角形(输出”0”

观察题目条件题意中的伪三角形(拼接成类似边长 1 1 2的伪三角形是指2条边长度和等于第3条边的情况对于应排序后的数组即有:arr[0] + arr[1] == arr[2] or arr[1] + arr[2] == arr[3]:

情况3:其他情况(否则输出”-1”

示例解答:

引自:https://blog.csdn.net/2201_76029243/article/details/128435817

class Solution:
    def __init__(self) -> None:
        pass

    def solution(self, arr):
        result = None

        ###################################################################
        # TODO: 请在此编写代码
        # 逻辑:两边之长大于第三边两边之差小于第三边用3大3小判断
        arr.sort()  # 升序排列
        if arr[0] + arr[1] > arr[2] and arr[2] - arr[0] < arr[1]:  # 3小
            result = 1
        elif arr[1] + arr[2] > arr[3] and arr[3] - arr[1] < arr[2]:  # 3大
            result = 1
        elif arr[0] + arr[1] == arr[2] or arr[1] + arr[2] == arr[3]:  # 伪三角
            result = 0
        else:
            result = -1
        ###################################################################
        return result


if __name__ == "__main__":
    arr = [int(item) for item in input().strip().split()]
    sol = Solution()
    result = sol.solution(arr)
    print(result)

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: python