题目:
“是的。”
“那你干什么呢?”
“看世界杯呀,笨蛋!”
“@#$%^&*%...”
确实如此,世界杯来了,球迷的节日也来了,估计很多ACMer也会抛开电脑,奔向电视了。
作为球迷,一定想看尽量多的完整的比赛,当然,作为新时代的好青年,你一定还会看一些其它的节目,比如新闻联播(永远不要忘记关心国家大事)、非常6+7、超级女生,以及王小丫的《开心辞典》等等,假设你已经知道了所有你喜欢看的电视节目的转播时间表,你会合理安排吗?(目标是能看尽量多的完整节目)
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
想法:根据结束时间用那个sort函数排序,然后把第二位的开始时间和第一的的末尾比较,若大,则总数加一,重复,否则继续比较。。
代码:
#include <iostream>
#include <algorithm>
using namespace std;
struct ball
{
int Ti_s;
int Ti_e;
};
ball balltime[101];
bool cmp(const ball &a,const ball&b)
{
if((a.Ti_e<b.Ti_e)||((a.Ti_e==b.Ti_e)&&(a.Ti_s<b.Ti_s)))
return true;
else return false;
}
int main()
{
int i,n,b=0,ba;
while(cin>>n)
{
if(n!=0)
{
for(i=1;i<=n;i++)
{
cin>>balltime[i].Ti_s>>balltime[i].Ti_e;
}
sort(balltime+1,balltime+n+1,cmp);
ba=1;
b=balltime[1].Ti_e;
for(i=1;i<=n;i++)
{
if(b<=balltime[i].Ti_s)
{
ba++;
b=balltime[i].Ti_e;
}
}
cout<<ba<<endl;
}
}
}
感受:由于第一次接触,先做个汉语的试试,还行。。