基础贪心算法(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的值依旧不会加一! 
全部评论

相关推荐

点赞 评论 收藏
分享
09-17 17:33
门头沟学院 Java
阿里面试一直在聊天是不是就是kpi了
offer收割机jo...:应该不是KPI,因为好多人阿里简历都过不去
我的秋招日记
点赞 评论 收藏
分享
珩珺:那些经历都太大太空了,实习的情况不了解,大创项目连名字、背景、目的及意义都没体现出来;地摊经济更是看完连卖的什么产品都不知道,项目成果直接写营收多少都更直观真实一点;后面那个校文体部的更是工作内容是组织活动整理流程,成果变成了当志愿者,而且你们学校本科学生会大一入学就直接当部长吗,志愿里面还提到了疫情防控,全面解封是22年12月的事情,可能时间上也有冲突。可能你花了钱人家就用AI给你随便写了点内容改了一下,没什么体现个性化的点
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务