Ordonnancement des taches :

Étant donné un éventail d'emplois où chaque travail a une date limite et un bénéfice associé si le travail est terminé avant la date limite. Il est également donné que chaque travail prend une seule unité de temps, de sorte que le délai minimum possible pour tout travail est de 1. Comment maximiser le profit total si un seul travail peut être planifié à la fois.

1) Triez tous les emplois par ordre décroissant de profit.
2) Initialisez la séquence de résultats comme premier travail dans les travaux triés.
3) Suivez les étapes pour les n-1 emplois restants
…… .a) Si le travail en cours peut tenir dans la séquence de résultats actuelle sans manquer la date limite, ajoutez le travail en cours au résultat. Sinon, ignorez le travail en cours.

Algorithme

Struct job {

Id :caractére ;

Dead :entier ;

Profit :entier ; }

Procedure jobselec (job arr[], n :entire,)

Debut

Sort(arr,arr+n,, comparaison)

Result[n] :entier, slot[n]:booléen;

Pour I allant de 0 à n-1 faire

Slot[i]ß false ;

Fin pour

Pour i allant de 0 à n-1 faire

                Pour j allant de min(n,arr[i].dead)-1 à 0 faire j—

                                Si slot[j]=false alors

                                                Result[j]ß i ;

                                                Slot[j]ß true ;

                                                Jß -1 ;

                                Finsi ;

                Fin pour

Fin pour

Pour i allant de 0 à n-1 faire

                Si slot[i]=true alors arr[result[i].id

Modifié le: samedi 4 avril 2020, 19:22