Maison  >  Article  >  développement back-end  >  Programme C++ pour calculer combien de films les participants d'un festival de cinéma peuvent regarder en entier

Programme C++ pour calculer combien de films les participants d'un festival de cinéma peuvent regarder en entier

WBOY
WBOYavant
2023-09-09 12:33:041066parcourir

Programme C++ pour calculer combien de films les participants dun festival de cinéma peuvent regarder en entier

Supposons qu'il y ait un festival de films qui présente divers films de différents pays. Désormais, un participant souhaite assister à autant de films sans chevauchement que possible, et nous devons l'aider à déterminer le nombre de films auxquels il peut assister.

Il existe une structure Film, qui comprend les membres suivants :

  • L'heure de début du film.
  • La durée du film.
  • Heure de fin du film.

Il existe également une structure Festival, qui compte les membres suivants :

  • Le nombre de films du festival.
  • Un tableau de types Film dont la taille est la même que le nombre de films du festival.

Nous devons créer et initialiser un objet Festival, qui contient deux tableaux « timeBegin » et « durée », qui contiennent respectivement l'heure de début et la durée de plusieurs films. L'entier n représente le nombre total de films et est également utilisé pour initialiser l'objet. Nous utilisons également cet objet pour calculer le nombre de films qu'un participant peut regarder dans son intégralité.

Donc, si l'entrée est timeBegin = {1, 3, 0, 5, 5, 8, 8}, durée = {3, 2, 2, 4, 3, 2, 3}, n = 7, alors la sortie sera Oui 4

Les participants peuvent regarder 4 films en intégralité lors de ce festival du film.

Pour résoudre ce problème, nous suivrons les étapes suivantes :

  • Structure Movie {
    • Définissez trois variables membres timeBegin, duration, timeEnd
    • opérateur de surcharge '
    • Return timeEnd
  • Structure Festival {
    • Définir un nombre de variables membres
    • Définir un tableau contenant des éléments de type film films
  • Définir une fonction initialize(), qui acceptera les tableaux timeBegin et timeEnd et un entier n.
    • filmFestival := Un nouvel objet Festival
    • comptage de filmFestival := count
    • Pour l'initialisation i := 0, quand i
    • temp := Un nouveau Objet de type film
    • temp timeBegin := timeBegin[i]
    • temp durée := durée[i]
    • temp timeEnd := timeBegin[i] + durée[i]
    • insérer temp dans Dans le tableau films de filmFestival,
  • renvoie filmFestival
  • Définissez une fonction solve(), qui acceptera une variable fest de type Festival,
    • res := 0
    • pour trier le tableau de films de fest
    • timeEnd := -1
    • Pour l'initialisation i := 0, quand je compte, mettez à jour (incrémentez i de 1), effectuez les opérations suivantes :
      • Si l'heure Début des films[i] du festival >= heureEnd, effectuez l'opération suivante :
        • ( incrémenter res de 1)
        • timeEnd := timeEnd of movies[i] of fest
    • return res
  • Example

    Regardons l'implémentation suivante pour une meilleure compréhension :

    #include<bits/stdc++.h>
    
    using namespace std;
    
    struct Movie {
       int timeBegin, duration, timeEnd;
       bool operator<(const Movie& another) const {
          return timeEnd < another.timeEnd;
       }
    };
    
    struct Festival {
       int count;
       vector<Movie> movies;
    };
    Festival* initialize(int timeBegin[], int duration[], int count) {
       Festival* filmFestival = new Festival;
       filmFestival->count = count;
       for (int i = 0; i < count; i++) {
          Movie temp;
          temp.timeBegin = timeBegin[i];
          temp.duration = duration[i];
          temp.timeEnd = timeBegin[i] + duration[i];
          filmFestival->movies.push_back(temp);
       }
       return filmFestival;
    }
    int solve(Festival* fest) {
       int res = 0;
       sort(fest->movies.begin(), fest->movies.end());
       int timeEnd = -1;
       for (int i = 0; i < fest->count; i++) {
          if (fest->movies[i].timeBegin >= timeEnd) {
             res++;
                timeEnd = fest->movies[i].timeEnd;
          }
       }
       return res;
    }
    
    int main(int argc, char *argv[]) {
    int timeBegin[] = {1, 3, 0, 5, 5, 8, 8};
    int duration[] = {3, 2, 2, 4, 3, 2, 3};
    Festival * fest;
    fest = initialize(timeBegin,duration, 7);
    cout << solve(fest) << endl;
    return 0;
    }

    input

    int timeBegin[] = {1, 3, 0, 5, 5, 8, 8};
    int duration[] = {3, 2, 2, 4, 3, 2, 3};
    Festival * fest;
    fest = initialize(timeBegin,duration, 7);

    sortie

    4

    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!

    Déclaration:
    Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer