Maison > développement back-end > C++ > le corps du texte

Programme C pour le problème de sélection d'activité

王林
Libérer: 2023-09-11 22:13:02
avant
543 Les gens l'ont consulté

Programme C pour le problème de sélection dactivité

Le problème de sélection d'activités est un problème étant donné un ensemble d'activités et leurs heures de début et de fin. Nous devons trouver toutes les activités qu’une personne peut effectuer en effectuant une seule activité à la fois.

Ce problème spécifie un algorithme glouton pour choisir la prochaine activité à effectuer. Comprenons d’abord l’algorithme gourmand.

L'algorithme gourmand est un algorithme qui tente de trouver une solution à un problème en trouvant une solution étape par étape. Pour choisir l’étape suivante, l’algorithme sélectionne également l’étape qui semble la plus prometteuse, c’est-à-dire celle qui conduit à une solution optimisée immédiatement par rapport aux autres. L'algorithme glouton est utilisé pour résoudre des problèmes d'optimisation car il tente de trouver la solution la plus optimale pour la prochaine étape intermédiaire, conduisant à la solution optimale à l'ensemble du problème.

Bien que l'algorithme glouton soit une bonne solution, certains problèmes empêchent son application. Par exemple, le sac à dos 0-1 ne peut pas être résolu à l’aide d’un algorithme glouton.

Algorithme

Certains algorithmes gloutons standards sont -

1) Dijkstrata’s Shortest Path
2) Minimum Spanning Tree (MST) {prim’s and kruskal’s}
3) Huffman coding
Copier après la connexion

Problème de sélection inactive, on nous pose n problèmes avec l'heure de début et de fin. Nous devons choisir le nombre maximum d’activités qu’une personne peut effectuer, en supposant qu’elle ne peut effectuer qu’une seule activité à la fois.

Il y a 3 activités triées par heure de fin,

Start = [1 , 5 , 12 ]
End = [10, 13, 23]
Copier après la connexion

Ici, on peut réaliser jusqu'à deux activités. Les activités pouvant être réalisées sont [0, 2].

Exemple

Démonstration

#include<stdio.h>
int main(){
   int start[] = {1 , 5 , 12};
   int finish[] = {10, 13, 23};
   int activities = sizeof(start)/sizeof(start[0]);
   int i, j;
   printf ("Following activities are selected \t");
   i = 0;
   printf("%d\t", i);
   for (j = 1; j < activities; j++){
      if (start[j] >= finish[i]){
         printf ("%d ", j);
         i = j;
      }
   }
   return 0;
}
Copier après la connexion

Sortie

Following activities are selected 0 2
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal