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

来源:互联网 发布:天心erp软件 编辑:程序博客网 时间:2024/06/09 21:58
/*    现在有n项工作,知道每一项工作的开始时间和结束时间,问最多可以选择多少工作      算法设计:贪心算法,不断选择不冲突的那些结束时间最短的工作*/#include<iostream>#include<vector>#define max_n 100001using namespace std;int N;//first is the start of the job,and the secone is the end time of the jobtypedef 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 timefor (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 jobint 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;}

0 0