Junio de 2022 C / C ++ (Nivel 7) Análisis de preguntas reales del examen # 中国 Sociedad de Electrónica # Examen nacional de nivel de programación de software para jóvenes

Insertar descripción de la imagen aquí

Programación C/C++ (Niveles 1 ~ 8) Todas las preguntas reales・Haga clic aquí

Pregunta 1: ¿Cuántos tipos de árboles binarios existen?

Ingrese n (1<n<13), encuentre cuántas formas de árbol binario con n nodos hay.
Límite de tiempo: 1000
Límite de memoria: 65536
entrada
Entero n
salida
Respuesta
entrada de muestra
3
Salida de muestra
5

Este problema se puede resolver utilizando métodos de programación dinámica. Podemos definir una matriz dpque dp[i]represente ila cantidad de tipos de árboles binarios cuando hay un nodo. Según las propiedades de los árboles binarios, podemos saber que el número de especies de un árbol binario depende de las especies de su subárbol izquierdo y de su subárbol derecho.

La relación recursiva de programación dinámica específica es la siguiente:

Para iun árbol binario de nodos, podemos seleccionar un nodo como nodo raíz, los nodos a su izquierda forman el subárbol izquierdo y los nodos a la derecha forman el subárbol derecho. Según esta división se puede obtener la siguiente relación:

dp[i] = dp[0] * dp[i-1] + dp[1] * dp[i-2] + ... + dp[i-1] * dp[0]

en,

Supongo que te gusta

Origin blog.csdn.net/gozhuyinglong/article/details/132655355
Recomendado
Clasificación