题目描述
寒假到了,小明回到家和爸妈打声招呼就奔向电视了,作为一个资深电视迷,一定想看尽量多的完整的电视节目,以弥补学校枯燥的学习生活。假设你已经知道了所有小明喜欢看的电视节目的转播时间表,请你帮助小明合理安排时间(目标是能看尽量多的完整节目)。
输入
输入数据包含多个测试实例,每个测试实例的第一行只有一个整数 nnn (n≤100)(n \le 100)(n≤100),表示你喜欢看的节目的总数,然后是 nnn 行数据,每行包括两个数据 TisT_{is}Tis,TieT_{ie}Tie (1≤i≤n)(1 \le i \le n)(1≤i≤n),分别表示第 iii 个节目的开始和结束时间,为了简化问题,每个时间都用一个正整数表示。n=0n = 0n=0 表示输入结束,不做处理。
输出
对于每个测试实例,输出能完整看到的电视节目的个数,每个测试实例的输出占一行。
输入输出样例
样例输入 #1
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
样例输出 #1
5
此处省去ytu上一条无用的提示
代码在此
#include<iostream>
#include<algorithm>
using namespace std;
int n;
int ans = 0;
struct sbtz
{
int begin;
int end;
};
bool cmp(sbtz a, sbtz b)
{
return a.end < b.end;
}
int main()
{
while (cin >> n)
{
if (n == 0)
return 0;
sbtz tv[105];
ans = 0;
for (int i = 0; i < n; i++)
{
cin >> tv[i].begin >> tv[i].end;
}
sort(tv, tv + n, cmp);
int tmp = tv[0].end;
for (int i = 1; i < n; i++)
{
if (tv[i].begin >= tmp)
{
ans++;
tmp = tv[i].end;
}
}
cout << ans+1 << endl;
}
return 0;
}
为了方便某些同学快速复制,我就直接吧代码放出来吧(就和上面一样),方便的话给个赞或者关注呗!
快速复制代码
#include<iostream>
#include<algorithm>
using namespace std;
int n;
int ans = 0;
struct sbtz
{
int begin;
int end;
};
bool cmp(sbtz a, sbtz b)
{
return a.end < b.end;
}
int main()
{
while (cin >> n)
{
if (n == 0)
return 0;
sbtz tv[105];
ans = 0;
for (int i = 0; i < n; i++)
{
cin >> tv[i].begin >> tv[i].end;
}
sort(tv, tv + n, cmp);
int tmp = tv[0].end;
for (int i = 1; i < n; i++)
{
if (tv[i].begin >= tmp)
{
ans++;
tmp = tv[i].end;
}
}
cout << ans+1 << endl;
}
return 0;
}
祝大家生活愉快!宁外,母亲节快到了别忘了祝福你的家人哦!