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 42 43
|
Mine PlusCourt( List<Mine> mines, double p )
{
// On présume que plusieurs mines peuvent répondre au critère
List<Mine> resultat = new List<Mine>();
foreach ( Mine mine1 in mines )
{
bool ok = true;
foreach ( Mine mine2 in mines )
{
double t12 = mine1.Cout / p + mine2.Cout / (p + mine1.Production);
double t21 = mine2.Cout / p + mine1.Cout / (p + mine2.Production);
if ( t12 > t21 )
{
// Si t12 > t21, mine1 n'est pas la bonne mine
ok = false;
break;
}
}
// Si la valeur 'ok' n'est pas passée à 'false'
if ( ok )
{
// mine1 est avant toute autre à p
resultat.Add( mine1 );
}
}
if ( resultat.Count > 1 )
{
// Il arrive qu'on ait des solutions multiples
return resultat[0];
}
else if ( resultat.Count > 0 )
{
return resultat[0];
}
// Pas de cas rencontré
return null;
} |