60 lines
1.6 KiB
Java
60 lines
1.6 KiB
Java
import java.util.*;
|
|
import java.util.Objects;
|
|
import java.util.ArrayList;
|
|
|
|
/** feuille du motif composite */
|
|
public class Chef extends Person {
|
|
private List<Person> grp;
|
|
|
|
public boolean addSubalterne(Person p){
|
|
return grp.add(p);
|
|
}
|
|
|
|
|
|
|
|
/** constructeur
|
|
*
|
|
* @param n fun factor
|
|
*
|
|
*/
|
|
public Chef(int n){
|
|
super(n);
|
|
this.grp = new ArrayList<>();
|
|
// d'autres choses peut-être.
|
|
}
|
|
|
|
|
|
/**
|
|
* La meilleure fête avec moi, c'est la meilleure fête sans mes subalternes pour eux plus moi.
|
|
*
|
|
* @return retourne la valeur de la meilleure fête en invitant seulement les gens dont cette personne est le ou la supérieure hiérarchique, mais pas elle.
|
|
*
|
|
*/
|
|
public int bestPartyWithoutMe(){
|
|
int total = 0;
|
|
for (Person p : grp) {
|
|
total += p.bestParty(); // Chaque subalterne peut choisir de venir ou non
|
|
}
|
|
return total;
|
|
}
|
|
|
|
/**
|
|
* La meilleure fête est soit sans moi (c'est l'union des meilleures fêtes de mes subalternes).
|
|
* soit c'est la meilleure fête avec moi.
|
|
*
|
|
* @return la valeur de la meilleure fête en invitant seulement les gens dont cette personne est le ou la supérieure hiérarchique (peut-être avec elle).
|
|
*
|
|
*/
|
|
public int bestParty(){
|
|
int sansMoi = bestPartyWithoutMe();
|
|
int avecMoi = getFunFactor();
|
|
for (Person p : grp) {
|
|
avecMoi += p.bestPartyWithoutMe(); // Si je viens, mes subalternes ne peuvent pas venir
|
|
}
|
|
return Math.max(sansMoi, avecMoi);
|
|
}
|
|
|
|
}
|
|
|
|
|