一位会计师接到n家公司的面试通知,各家公司的通知书内包含有面试的开始和结束时间。巧合的是,所有公司面试的时间都是同一天。这位会计师希望可以面试尽量多的公司。但各家公司的面试时间发生冲突的事情将无法避免。而面试官对时间的要求非常严格,如果出现迟到的情况,他将毫不犹豫的取消这次面试。所以这位会计师希望您帮忙设计一个程序来帮助他安排面试的事情,使得他能尽可能多的得到面试的机会。从一个面试点到另一个面试点的时间忽略不计。
输入格式
第一行:一个整数n(1<=n<=1000),表示面试的总数量。
接下来n行每行包括两个正整数s、t,分别表示该面试点给出的起始时间和终止时间。其中ss<t。(0<s<t≤10000);
输出格式
能够参加的面试最大数。
输入/输出例子1
输入:
3
1 15
2 19
15 17
输出:
2
#include<bits/stdc++.h>
using namespace std;
int n,lt,ans;
struct sb{
int start,end;
}client[1001];
bool cmp(sb a,sb b){return a.end<b.end;}//按结束时间升序
int main(){
ios::sync_with_stdio(0);
cin>>n;
for(int i=0;i<n;i++) cin>>client[i].start>>client[i].end;
sort(client,client+n,cmp); //排序
for(int i=0;i<n;i++) if(client[i].start>=lt) ans++,lt=client[i].end;
cout<<ans;
return 0;
}
http://www.manongjc.com/detail/25-xenmryvlqtxoaby.html
你看一下,用bool数组表示一下时间是否空余的记录,判断那个时间段的所有时间点是否都空余,如果全是,则吧从i+1到j-1的数组都变为false,然后ans++。
你看这个思路行不