2012-01-25 10 views
8

derivar un algoritmo para la impresión de una pirámide con todas las combinaciones posibles tal que más ligero y más pequeño persona se encuentran en la parte superior de la pirámide y más pesado y más grande persona como baseimpresión Pirámide Puzzle

Por ejemplo:

persona A 80 kg 140 cms

persona B 90kg 150 cms

Persona C 100kg 160 cms

persona D 100 kg 170 cms

Person E 150 kg 180 cms

persona F 160kg 185 cms

A 
B C 
D E F 

Nota: persona con la altura y el peso más grande que otra persona puede no estar en la parte superior de esa persona No es un mandorio para cada persona para ser parte de la estructura piramidal

+0

es la pirámide requiere para ser "completo"? es decir, en este caso, una pirámide de 1 persona, 3 personas o 6 personas. Además, ¿Puede B ser más pesado o más alto que F en tu figura? –

+0

No es necesario que la pirámide esté llena. puede ser una pirámide de 3 personas y 6 personas. (Sin embargo, una pirámide de 1 persona no es posible). –

+0

¿no es solo montón? – dfens

Respuesta

3

Aquí hay una idea aproximada.

Construir un gráfico de una manera que un borde dirigido va desde el nodo X a Y si X > Y (ambos componentes) y no hay tal Z que X > Z > Y, por su ejemplo

 /C \ 
F -> E  B -> A 
     \ D/

luego construir todos los árboles de Hight 1, de forma recursiva y construir el resto de este modo:

Marcar todos los nodos utilizados en el árbol (inicialmente, sólo un nodo) Para poner a una persona en virtud de X otras 2 personas Y Z sólo se pueden utilizar las personas que en el grap h son bajoY Z

uso todas las permutaciones y de forma recursiva repetir hasta que se pueda construir no más

Cuestiones relacionadas