题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2037
下面我附上两篇代码,一篇是AC的,另一篇是WA的,错误原因是什么谁知道麻烦告诉我,谢谢了
AC代码:
- #include <iostream>
 - #include <algorithm>
 - using namespace std;
 - struct Time
 - {
 - int s,e;
 - }N[101];
 - bool cmp(struct Time a,struct Time b)
 - {
 - return a.e<b.e;
 - }
 - int main()
 - {
 - int ans,t,i;
 - while(cin>>t)
 - {
 - if(t==0) break;
 - ans=1;
 - for(i=0;i<t;i++)
 - cin>>N[i].s>>N[i].e;
 - sort(N,N+t,cmp);
 - int n=N[0].e;
 - for(i=1;i<t;i++)
 - {
 - if(N[i].s>=n)
 - {
 - ans++;
 - n=N[i].e;
 - }
 - }
 - cout<<ans<<endl;
 - }
 - return 0;
 - }
 
WA代码:
- #include <iostream>
 - #include <algorithm>
 - using namespace std;
 - struct Time
 - {
 - int s,e;
 - }N[101];
 - bool cmp(struct Time a,struct Time b)
 - {
 - return a.e<b.e;
 - }
 - int main()
 - {
 - int ans,t,i;
 - while(cin>>t)
 - {
 - if(t==0) break;
 - ans=1;
 - for(i=0;i<t;i++)
 - cin>>N[i].s>>N[i].e;
 - sort(N,N+t,cmp);
 - for(i=1;i<t;i++)
 - {
 - if(N[i].s>=N[i-1].e) ans++;
 - }
 - cout<<ans<<endl;
 - }
 - return 0;
 - }
 
知道原因了!
- for(i=1;i<t;i++)
 - {
 - if(N[i].s>=N[i-1].e)
 - ans++;
 - }
 
结束时间,但是却大于前面第二个节目的结束时间ans的值依旧不会加一!

京公网安备 11010502036488号