前言:
21考研,正在啃《算法笔记》,不论能否进复试记录一下准备路上写下的垃圾代码。
解答:
#include<iostream>
#include<vector>
#include<algorithm>
#include<cmath>
#include<string>
using namespace std;
struct program {
int start;
int end;
};
bool cmp(program pro1, program pro2) {
if (pro1.start != pro2.start)
return pro1.start > pro2.start;
else
return pro1.end<pro2.end;
}
int main() {
int n = -1;
while (cin >> n && n != 0) {
vector<program> vi;
program temp;
for (int i = 0; i < n; i++) {
cin >> temp.start >> temp.end;
vi.push_back(temp);
}
sort(vi.begin(), vi.end(), cmp);
int count = 1;
int laststart = vi[0].start;
for (int i = 1; i < vi.size(); i++) {
if (vi[i].end <= laststart) {
count++;
laststart = vi[i].start;
}
}
cout << count << endl;
}
return 0;
}
跟书上的区间贪心例子一模一样