Reducir el problema de la cuerda C ++

 


Descripción del Título

Aquí hay una cuerda con una longitud de n. Corta la cuerda en m segmentos de longitud entera (myn son números enteros, n> 1 y m> 1). La longitud de cada cuerda es k [0], k [1], ..., k [m]. ¿Cuál es el producto máximo posible de k [0] xk [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 descripción:

输入一个数n,意义见题面。(2 <= n <= 60)

Descripción de salida:

输出答案。

Ejemplo 1

entrar

8

Salida

18

 

responder: 

class Solution {

public:

    int cutRope(int number) {

        if(number==2)

            return 1;

        if(number==3)

            return 2;

        if(number%3==0)

            return pow(3,number/3);

        else if((number-1)%3==0)

            return 4*pow(3,(number-4)/3);

        else

            return 2*pow(3,(number-2)/3);

    }

};

Lo anterior es la respuesta enviada por Niuke en ese momento.

Lo siguiente está escrito en una declaración de caso, que parece más ordenada:

#include <iostream>

#include<cmath>

using namespace std;





int f(n){

    switch(1){

        case n=2:

            return 1;

            break;

        case n=3:

            return 2;

            break;

        case n%3 == 0:

            return pow(3,n/3);

            break;

        case (n-1)%3 == 0:

            return 4*pow(3,(n-4)/3);

            break;

        default:

            return return 2*pow(3,(n-2)/3);

            break;

    }

}



int main() {

    int n = 0;

    cin >> n;

    cout << f(n) << endl;

    return 0;

}


El multiplicador más grande solo puede ser una combinación de potencias de 2 y 3, solo encuentra el número correspondiente de 2 o 3. No hay programación dinámica, algoritmo codicioso.

n = 2 y n = 3 son casos especiales, simplemente escríbalos por separado.

 

A partir de n = 4,

Dibujarlo en papel y dibujar una docena de números para encontrar un patrón:

La potencia de 2 es un ciclo de 2, 1, 0;

 

La potencia de 3 está determinada por la potencia de 2, por lo que la clave para resolver el problema es encontrar las condiciones que determinan la potencia de 2.

Entonces se encuentra que la potencia de 2 es 0, el número correspondiente es múltiplo de 3, la potencia de 2 es 2, el número correspondiente menos 1 es múltiplo de 3 y la potencia de 2 correspondiente a los números restantes es 1.

Enumere las tres situaciones y calcúlelas por separado.

 


para resumir

Basta clasificar y discutir estos temas.

Supongo que te gusta

Origin blog.csdn.net/sinat_39416814/article/details/104071817
Recomendado
Clasificación