电影节
- 描述
-
大学生电影节在北大举办! 这天,在北大各地放了多部电影,给定每部电影的放映时间区间,区间重叠的电影不可能同时看(端点可以重合),问李雷最多可以看多少部电影。
- 输入
- 多组数据。每组数据开头是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 }

浙公网安备 33010602011771号