电影节

描述

大学生电影节在北大举办! 这天,在北大各地放了多部电影,给定每部电影的放映时间区间,区间重叠的电影不可能同时看(端点可以重合),问李雷最多可以看多少部电影。

输入
多组数据。每组数据开头是n(n<=100),表示共n场电影。
接下来n行,每行两个整数(0到1000之间),表示一场电影的放映区间
n=0则数据结束
输出
对每组数据输出最多能看几部电影
目前只会用贪心解此题,希望以后能用动归解决;
 1 #include<iostream>
 2 #include<algorithm>
 3 using namespace std;
 4 struct Time {
 5     int s, e;
 6     bool operator < (const Time & t) {
 7         return e < t.e;  
 8     }
 9 }times[110];
10 int steps = 0;    //能看多少部;
11 int main () {
12     //freopen("C:\\Users\\Charlie Li\\Documents\\Visual Studio 2010\\Projects\\!测试数据\\in.txt", "r", stdin);
13     int n;
14     while(cin >> n && n != 0) {
15         for(int i = 0; i < n; i++) 
16             cin >> times[i].s >> times[i].e;
17         sort(times, times+n);
18         steps = 1;
19         Time tmp = times[0];
20         for(int i = 1; i < n; i++) {
21             if(tmp.e <= times[i].s) {
22                 steps ++;
23                 tmp = times[i];
24             }
25         }
26         cout << steps << endl;
27     }
28     return 0;
29 }

 

posted @ 2018-03-16 19:40  Charlie_li  阅读(138)  评论(0)    收藏  举报