首页 > 编程语言 > 详细

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

时间:2015-04-03 09:25:47      阅读:215      评论:0      收藏:0      [点我收藏+]
/*
    现在有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;
}

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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!