Au lieu de s'en tenir au système de l'arbre et du parcours en arrière, en réfléchissant un peu, on peut trouver les deux nombres en même temps : en effet, on mémorisera en même temps le plus grand des nombres à comparer et le plus grand de ceux qu'il aura "dominés".
On suppose qu'on a un tableau T du style
___________________________________________
| 5 | 1 | 10 | 3 | 15 | 19 | 5 | 8 | 20 | 4 |30 |
___________________________________________
On va construire une suite de tableaux de ce style
T1
_________________________
| 5 | 10 | 19 | 8 | 20 | 30 |
_________________________
| 1 | 3 | 15 | 5 | 4 | MIN_INT
_________________________
C'est - à - dire qu'on mémorise le plus grand et l'autre au premier tour.
S'il reste un nombre tout seul, on peut utiliser INT_MIN en plus petit en C.
T2
_____________
| 10 | 19 | 30 |
_____________
| 5 | 15 | 20 |
_____________
Cette fois-ci on mémorise 10 car il est plus grand que 5 et comme 5 est plus grand que 3, on mémorise en second plus grand 5
On mémorisera enxsuite 19 car il est plus grand que 8 et on garde 15.
Enfin on mémorise 30 et 20 en plus petit
T3
_________
| 19 | 30 |
_________
| 15 | 20 |
__________
On garde (19, 15) et (30,20)
T4
_____
| 30 |
_____
| 20 |
_____
On a terminé, 30 et 20 sont bien les deux plus grands nombres !
Message édité par Trap D le 07-05-2006 à 10:42:23