码迷,mamicode.com
首页 > 编程语言 > 详细

贪心算法设计 关于区间选择问题

时间:2015-04-03 09:27:33      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:博客   算法   greedy   贪心算法   

/*
    现在有n项工作,知道每一项工作的开始时间和结束时间,问最多可以选择多少工作
      算法设计:贪心算法,不断选择不冲突的那些结束时间最短的工作
*/
#include<iostream>
#include<vector>
#define max_n 100001
using namespace std;
int N;
//first is the start of the job,and the secone is the end time of the job
typedef pair<int, int> p;
p vit[max_n];
int main()
{
	while (cin >> N){
		for (int i = 0; i < N; i++){
			cin >> vit[i].first >> vit[i].second;
		}
		//sort according to the end time
		for (int i = 0; i < N - 1; i++){
			for (int j = i + 1; j < N; j++){
				if (vit[i].second>vit[j].second){
					p t = vit[i];
					vit[i] = vit[j];
					vit[j] = t;
				}
			}
		}
		//end the sort,then start to choose the job
		int ans = 0,pre=0;
		for (int i = 0; i < N; i++){
			if (pre < vit[i].first){
				ans++;
				pre = vit[i].second;
			}
		}
		cout << ans << endl;
	}
	return 0;
}

贪心算法设计 关于区间选择问题

标签:博客   算法   greedy   贪心算法   

原文地址:http://blog.csdn.net/hujian_/article/details/44838093

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!