Angenommen, es gibt ein Filmfestival, das verschiedene Filme aus verschiedenen Ländern zeigt. Nun möchte ein Teilnehmer so viele sich nicht überschneidende Filme wie möglich sehen, und wir müssen ihm dabei helfen, herauszufinden, wie viele Filme er besuchen kann.
Es gibt eine Struktur „Film“, die folgende Mitglieder hat:
Es gibt auch ein Strukturfestival, das folgende Mitglieder hat:
Wir müssen ein Festival-Objekt erstellen und initialisieren, das zwei Arrays „timeBegin“ und „duration“ enthält, die jeweils die Startzeit und die Dauer mehrerer Filme enthalten. Die Ganzzahl n stellt die Gesamtzahl der Filme dar und wird auch zur Initialisierung des Objekts verwendet. Darüber hinaus verwenden wir dieses Objekt, um zu berechnen, wie viele Filme ein Teilnehmer vollständig ansehen kann.
Wenn also die Eingabe timeBegin = {1, 3, 0, 5, 5, 8, 8}, Dauer = {3, 2, 2, 4, 3, 2, 3}, n = 7 ist, dann ist die Ausgabe wird Ja 4
Teilnehmer können bei diesem Filmfestival 4 Filme in voller Länge ansehen.
Um dieses Problem zu lösen, führen wir die folgenden Schritte aus:
Schauen wir uns zum besseren Verständnis die folgende Implementierung an. :
#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);
Das obige ist der detaillierte Inhalt vonC++-Programm zur Berechnung, wie viele Filme auf einem Filmfestival die Teilnehmer vollständig ansehen können. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!