hdu 2037 贪心
原题:http://acm.hdu.edu.cn/showproblem.php?pid=2037
1 #include<iostream>
2 #include<iomanip>
3 #include<cstdlib>
4 #include<algorithm>
5
6 using namespace std;
7
8 typedef struct
9 {
10 int beginTime,endTime;
11 } programTime;
12
13 bool cmp(const programTime &a,const programTime &b)
14 {
15 if(a.endTime == b.endTime)
16 return a.beginTime < b.beginTime;
17 else
18 return a.endTime < b.endTime;
19 }//升序排列
20
21 int main(void)
22 {
23 int n;
24
25 while(cin >> n && n)
26 {
27 programTime *list = new programTime[n];
28
29 for(int i(0);i != n;++i)
30 cin >> list[i].beginTime >> list[i].endTime;
31 sort(list,list+n,cmp);
32
33 int count(1);
34
35 for(int i(1),j(0);i != n;++i)
36 if(list[i].beginTime >= list[j].endTime)
37 {
38 ++count;
39 j = i;
40 }
41 cout << count << endl;
42 }
43 return 0;
44 }
贪心算法。自定义了cmp函数,排序的原则是如果结束时间相同,则优先选一个早开始的,否则选结束时间早的。感觉贪心算法在beginTime很小但endTime很大时候有些错误,但还是把这道题水过来了。建议用dp来写。
浙公网安备 33010602011771号