1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
tu cherches le maximum de la première ligne, tu sauvegarde sa position et sa valeur
tant que le tableau n'est pas parcouru
{
tu cherches le maximum de la ligne actuel
si (ce maximum se trouve dans la même colonne de 1 des maximums précedents ?)
{
- deplacerMaximum(ligne1, ligne2);
- re vérifier si le maximum déplacé se trouve dans la même colonne d'un autre maximum,
- si c'est la cas il faut re appeler déplacerMaximum et re verifier jusqu'à ce qu'il y ait aucun conflit
}
- tu sauvgardes sa position et sa valeur et tu continues
}
//ligne1 et ligne2 sont les lignes en conflits
deplacerMaximum(ligne1, ligne2)
{
max1a = maximum de ligne1
max1b = 2ème maximum de ligne1
max2a = maximum de ligne2
max2b = 2ème maximum de ligne2
si( (max1a + max2b) > (max1b + max2a) )
{
tu prend max1a pour ligne1 et max2b pour ligne2
}
si ( (max1a + max2b) < (max1b + max2a) )
{
tu prend max2a pour ligne1 et max2b pour ligne2
}
si ( (max1a + max2b) == (max1b + max2a) )
{
ce cas est ton problème. puisque le choix de une des deux possibilités influencera le choix
de maximum des lignes qui suivent et le résultat sera mauvais
(je n'ai pas de solution en tete pour ca mais ca se fait bien j'imagine)
}
} |
Partager