基础贪心算法(HDU2037今年暑假不AC)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2037

下面我附上两篇代码,一篇是AC的,另一篇是WA的,错误原因是什么谁知道麻烦告诉我,谢谢了

AC代码:

  1. #include <iostream>
  2. #include <algorithm>
  3. using namespace std;
  4. struct Time
  5. {
  6. int s,e;
  7. }N[101];
  8. bool cmp(struct Time a,struct Time b)
  9. {
  10. return a.e<b.e;
  11. }
  12. int main()
  13. {
  14. int ans,t,i;
  15. while(cin>>t)
  16. {
  17. if(t==0) break;
  18. ans=1;
  19. for(i=0;i<t;i++)
  20. cin>>N[i].s>>N[i].e;
  21. sort(N,N+t,cmp);
  22. int n=N[0].e;
  23. for(i=1;i<t;i++)
  24. {
  25. if(N[i].s>=n)
  26. {
  27. ans++;
  28. n=N[i].e;
  29. }
  30. }
  31. cout<<ans<<endl;
  32. }
  33. return 0;
  34. }

WA代码:

  1. #include <iostream>
  2. #include <algorithm>
  3. using namespace std;
  4. struct Time
  5. {
  6. int s,e;
  7. }N[101];
  8. bool cmp(struct Time a,struct Time b)
  9. {
  10. return a.e<b.e;
  11. }
  12. int main()
  13. {
  14. int ans,t,i;
  15. while(cin>>t)
  16. {
  17. if(t==0) break;
  18. ans=1;
  19. for(i=0;i<t;i++)
  20. cin>>N[i].s>>N[i].e;
  21. sort(N,N+t,cmp);
  22. for(i=1;i<t;i++)
  23. {
  24. if(N[i].s>=N[i-1].e) ans++;
  25. }
  26. cout<<ans<<endl;
  27. }
  28. return 0;
  29. }

知道原因了!

  1. for(i=1;i<t;i++)
  2. {
  3. if(N[i].s>=N[i-1].e)
  4. ans++;
  5. }
这样比较的只是两个相邻的区间,如果某个节目的开始时间小于上一个节目的
结束时间,但是却大于前面第二个节目的结束时间ans的值依旧不会加一! 
全部评论

相关推荐

头像
11-27 14:28
长沙理工大学
刷算法真的是提升代码能力最快的方法吗?&nbsp;刷算法真的是提升代码能力最快的方法吗?
牛牛不会牛泪:看你想提升什么,代码能力太宽泛了,是想提升算法能力还是工程能力? 工程能力做项目找实习,算法也分数据结构算法题和深度学习之类算法
点赞 评论 收藏
分享
11-26 22:34
已编辑
重庆邮电大学 Java
快手 客户端开发 (n+5)k*16 公积金12
牛客895077908号:佬 什么双非硕啊
点赞 评论 收藏
分享
totoroyyw:千年老妖😂
投递华为等公司10个岗位
点赞 评论 收藏
分享
10-09 22:05
666 C++
找到工作就狠狠玩CSGO:报联合国演讲,报电子烟设计与制造
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务