基础贪心算法(HDU2037今年暑假不AC)
题目链接: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的值依旧不会加一!