여러 나라의 다양한 영화를 선보이는 영화제가 있다고 가정해 보세요. 이제 참가자는 겹치지 않는 영화를 최대한 많이 참석하기를 원하므로 참석할 수 있는 영화 수를 파악하도록 도와야 합니다.
다음 멤버로 구성된 영화 구조가 있습니다.
다음과 같은 회원으로 구성된 구조 페스티벌도 있습니다:
여러 영화의 시작 시간과 기간을 각각 포함하는 두 개의 배열 'timeBegin'과 'duration'이 포함된 Festival 객체를 생성하고 초기화해야 합니다. 정수 n은 총 영화 수를 나타내며 객체를 초기화하는 데에도 사용됩니다. 또한 이 개체를 사용하여 참가자가 전체를 볼 수 있는 영화 수를 계산합니다.
입력이 timeBegin = {1, 3, 0, 5, 5, 8, 8}, 기간 = {3, 2, 2, 4, 3, 2, 3}, n = 7이면 출력은 will be Yes 4
이번 영화제에서 참가자들은 4편의 영화를 전편으로 감상할 수 있습니다.
이 문제를 해결하기 위해 다음 단계를 따르겠습니다.
더 나은 이해를 위해 다음 구현을 살펴보겠습니다.
출력#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; }
위 내용은 영화제 참가자들이 전체 시청할 수 있는 영화 수를 계산하는 C++ 프로그램의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!