El tiempo se apresura, aunque nunca me he conocido, pero conocí a Yusi, realmente es un gran destino, ¡gracias por tu visita!
Tema : Darle una cuerda con una longitud de n. Corte la cuerda en m segmentos de longitud entera (myn son números enteros, n> 1 y m> 1, m <= n) y registre la longitud de cada cuerda Es k [1], ..., k [m]. ¿Cuál es el producto máximo posible de k [1] x ... xk [m]? Por ejemplo, cuando la longitud de la cuerda es 8, la cortamos en tres piezas con longitudes de 2, 3 y 3. El producto máximo obtenido en este momento es 18. Ingrese la descripción: Ingrese un número n, vea el título para el significado. (2 <= n <= 60) Descripción de salida : muestra la respuesta.
Ejemplo :
示例 1 :
输入:8
返回值:18
Codigo 1:
# -*- coding:utf-8 -*-classSolution:defcutRope(self, number):
result =1while number >0:
number = number -3if number ==1:
result *=4return result
if number ==2:
result *=6return result
result *=3return result
Descripción del algoritmo: No importa cómo lo divida, el primer corte de la cuerda se dividirá en dos segmentos, por lo que se puede dividir en subproblemas a resolver; 1 = 1; 2 = 2; 3 = 3; 4 = 2 × 2; 5 = 2 × 3; 6 = 3 × 3; Todos los números por encima de 7 se pueden descomponer en el producto de 2 y 3, y cuando el multiplicador contiene más 3, el producto será mayor; por lo tanto, juzgue numbercuántos hay tres, y proceder gradualmente -3Operación, saber que el final es menor que 3; si el resto es 1, significa que antes de realizar la -3operación, number = 4el producto máximo de 4 sigue siendo 4; si el resto es 2, significa que antes de realizar la -3operación, number = 5el producto máximo de 5 es 6; hasta el number <= 0final del programa.