Explicar el tema del algoritmo en Python: tarea para las clases de jardín de infantes

Enlace del tema: https://edu.csdn.net/skill/program/28758?practiceId=13042531

1. Descripción del tema

Kindergarten finalmente tiene nueva tarea. El maestro dispuso que los estudiantes usaran los 4 palos de madera distribuidos a los estudiantes para empalmarlos en un triángulo. Por supuesto, según la lógica normal, si no se puede empalmar en un triángulo. Uno de los palos debe romperse para unir los triángulos. ¡Pero, por supuesto, el perezoso Xiaoyi no trabajará duro! Si no se puede empalmar en un triángulo, Xiaoyi confiará en él para formar un pseudo triángulo con una longitud de lado de 1 1 2. Si los pseudo-triángulos no se pueden unir, ¡entonces no se entregará la tarea!

Introduzca una descripción:

Introduzca las longitudes de los cuatro palos.

Descripción de salida:

Empalmar en un triángulo normal genera "1", un pseudo-triángulo genera "0", de lo contrario genera "-1".

ejemplo

entrada 1 2 3 4
salida 1

2. Ideas para resolver problemas

Consejos de los que han estado aquí:

  • ¡Solo necesita usar tres para formar un triángulo, en lugar de usar los cuatro! ¡No es necesario usar los cuatro! ¡No es necesario usar los cuatro!
  • Condiciones para juzgar un triángulo: la suma de dos lados cualesquiera es mayor que el tercer lado, y la diferencia entre dos lados cualesquiera es menor que el tercer lado.

Con estos dos consejos, básicamente no hay mayor problema~~~
pd: ¡Es demasiado lamentable! Me tomó más de una hora probar el primero... Al principio me concentré en los cuatro, pensando que había un error, lo pensé durante mucho tiempo e hice muchas pruebas. Como resultado, comenté todos los códigos sobre cómo armar 4 palos, traté de ejecutarlo y pasó.

A continuación, hablaré sobre algunos de mis pensamientos:
1. Basado en la condición de juicio del triángulo, de hecho, no hay necesidad de atravesar el valor, es realmente necesario juzgar el valor crítico comparando la diferencia entre la suma de dos lados cualesquiera con el tercero, es decir, los dos lados pequeños La suma es mayor que el lado largo, y la diferencia entre el lado largo y el lado corto es menor que el lado medio . Entonces el problema se simplifica un poco:
2. ¿Cómo elegir entre los cuatro tablones? Hay un total de 4 formas de tomarlas, de hecho se pueden dividir en dos formas, una vez para tomar tres largas y otra vez para tomar tres cortas. Ilustremos con un ejemplo: Asumiendo que es 1 2 3 4una toma 1 2 3, una toma 2 3 4, otras situaciones pueden ser ignoradas, porque si 1 2 3el resultado no es 1, será 2reemplazado por 4uno aún menos probable 1; si 2 3 4el resultado no es 1, entonces será 2reemplazado con 1, y el resultado es aún menos probable que sea 1.
3. ¿Cómo confirmar el tamaño de los tres lados? Primero ordene la lista, y luego tome los tres primeros y los tres últimos respectivamente.Si está en orden ascendente, entonces arr[0]<arr[1]<arr[2]<arr[3].

El resultado final es el siguiente #: El código en el medio de las dos filas:


# 请关闭中文输入法,用英文的字母和标点符号。
# 如果你想运行系统测试用例,请点击【执行代码】按钮,如果你想提交作答结果,请点击【提交】按钮,
# 注意:除答案外,请不要打印其他任何多余的字符,以免影响结果验证
# 本OJ系统是基于 OxCoder 技术开发,网址:www.oxcoder.com
# 模版代码提供基本的输入输出框架,可按个人代码习惯修改


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)

Supongo que te gusta

Origin blog.csdn.net/qq_45476428/article/details/127742258
Recomendado
Clasificación