区间问题

通过区间问题,更加深刻的了解了pair的用法,用sort函数对pair进行排序的时候,默认的是根据pair的first的进行升序,也可以自定义比较函数,如下:

 1 #include<iostream>
 2 #include<algorithm>
 3 using namespace std;
 4 int cmp(const pair<int,int>&a, const pair<int,int>&b)
 5 {
 6     return a.second > b.second;
 7 }
 8 int main()
 9 {
10     int n = 5, s[] = { 10,2,4,6,8 }, t[] = { 3,5,7,9,10 };
11     pair <int, int> itv[100];
12     for (int i = 0; i < n; i++)
13     {
14         itv[i].first = t[i];
15         itv[i].second = s[i];
16     }
17     sort(itv, itv + n,cmp);
18     for (int i = 0; i < 5; i++)
19         cout << itv[i].first << " " << itv[i].second << endl;
20     return 0;
21 }

对于区间问题的解法,果然大佬的方法比我们的简单和代码质量高了很多

 1 #include<iostream>
 2 #include<algorithm>
 3 using namespace std;
 4 int main()
 5 {
 6     int n = 5, s[] = { 10,2,4,6,8 }, t[] = { 3,5,7,9,10 };
 7     pair <int, int> itv[100];
 8     for (int i = 0; i < n; i++)
 9     {
10         itv[i].first = t[i];
11         itv[i].second = s[i];
12     }
13     sort(itv, itv + n);
14     int ans = 0, k = 0;//k为最后所选工作结束时间
15     for (int i = 0; i < n; i++)
16     {
17         if (k < itv[i].second)
18         {
19             ans++;
20             k = itv[i].first;
21         }
22     }
23     cout << ans << endl;
24     return 0;
25 }

//感觉最好解决这个问题的做法就是使用了pair,不像我解决时用得时queue再加一个结构体,那样的话还要自定义比较函数

posted @ 2018-04-07 13:40  zzuli风尘  阅读(244)  评论(0编辑  收藏  举报