问题 J: 花花看电影
题目:
时间限制: 1 Sec 内存限制: 128 MB
提交: 516 解决: 218
[提交] [状态] [讨论版] [命题人:外部导入]
题目描述
电影节到了,这天各地放了多部电影,给定每部电影的放映区间,区间重叠的电影不能同时看(端点可以重合),问花花最多能看多少部电影。
输入
一个整数n(1<n<=100),表示总的电影数
n个区间
输出
花花最多能看多少部电影
样例输入
10
0 3
2 4
5 6
3 5
7 9
6 8
10 12
9 11
13 15
12 13
样例输出
7
思路:
我初学c语言,我就把他叫做区间问题吧。
①先开始录值
②分别用2个数组装开始时间和结束时间
③用冒泡排序用结束时间做条件做排序,开始时间也跟着排
④排序结束后,用一个变量记录结束时间和开始时间做比较
⑤打印
⑥代码见下面
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
int a[100];
int b[100];
for(int i = 0; i<n; i++)
{
scanf("%d%d",&a[i],&b[i]);
}
// for(int i = 0;i<n;i++){
// printf("%d %d\n",a[i],b[i]);
// }
int temp;
for(int i = 0; i<n-1; i++)
{
for(int j = 0; j<n-1-i; j++)
{
if(b[j]>b[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
temp = b[j];
b[j] = b[j+1];
b[j+1] = temp;
}
}
}
for(int i = 0; i<n; i++)
{
// printf("%d %d\n",a[i],b[i]);
}
/*int count= 1;
for(int i = 0; i<n; i++)
{
if(a[i+1]>=b[i])
{
count++;
}
}*/
int max=0;
int count=0;
for(int i = 0; i<n; i++)
{
if(a[i]>=max)
{
count++;
max=b[i];
}
}
printf("%d",count);
return 0;
}