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
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 :
Il existe également une structure Festival, qui compte les membres suivants :
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 :
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; }
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);
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!