标签:
12
1 3
3 4
0 7
3 8
15 19
15 20
10 15
8 18
6 12
5 10
4 14
2 9
0
5
思路:贪心法:题目要求输出能看到的最多的完整的节目,首先需要按结束时间生序排序,当结束时间相同的,按开始时间升序排序。 然后从前往后计数。
代码:
#include <iostream> #include <cstdio> #include <algorithm> using namespace std; struct node{ int begin; int end; }; node tt[105]; int cmp(node a,node b){ return a.end<b.end||a.end==b.end&&a.begin<b.begin; } int main() { int n; int s=0; int k; while(scanf("%d",&n)!=EOF&&n){ for(int i=0;i<n;i++){ scanf("%d %d",&tt[i].begin,&tt[i].end); } sort(tt,tt+n,cmp); s+=1; k=0; for(int i=1;i<n;i++){ if(tt[i].begin>=tt[k].end){ s++; k=i; } } printf("%d\n",s); s=0; } return 0; } /************************************************************** Problem: 2227 User: zz13 Language: C++ Result: 正确 Time:0 ms Memory:1700 kb ****************************************************************/
标签:
原文地址:http://www.cnblogs.com/TWS-YIFEI/p/5686609.html