活动安排问题(贪心法)

求最多容纳的活动数

#include<cstdio>
#include<algorithm>
using namespace std;

struct Contest{
	int begin;
	int end;
};

Contest contests[1000];

bool compare(Contest a, Contest b){
	return a.end < b.end;
}

int main() {

	int N;
	while (scanf("%d", &N) != EOF){
		for (int i = 0; i < N; i++)
			scanf("%d%d", &contests[i].begin, &contests[i].end);
	
		sort(contests, contests + N, compare);
		int results = 1;
		int j = 0;
		
		for (int i = 1; i < N; i++){
			if (contests[i].begin >= contests[j].end){
				results++;
				j = i;
			}
		}
		printf("%d\n", results);
	}


	return 0;
}

猜你喜欢

转载自blog.csdn.net/dzydzy7/article/details/80149765