当前位置:   article > 正文

算法(31)-贪心(1)-会议室安排-C++_请用中文回答:用dev c++编写一段贪心算法的代码。在会议室安排中,可以确保会议室

请用中文回答:用dev c++编写一段贪心算法的代码。在会议室安排中,可以确保会议室

    会议室安排
输入:一组会议的其实终止时间比如[7,8],[8,10],[9,12][10,15]..就一个会议室,如何安排会议室的利用率最高。
输出:安排会议的个数,或者是安排了哪些会议。此时返回3 ,[7 8][8 10][10 15]
思路:按结束时间排序
           数据多时用小根堆
上代码:
 

  1. /*
  2. 贪心1 会议室安排
  3. 小根堆
  4. */
  5. class Program {
  6. public:
  7. int m_start;
  8. int m_end;
  9. Program(int start, int end) {
  10. m_start = start;
  11. m_end = end;
  12. }
  13. bool operator < (const Program n) const
  14. {
  15. return m_end>n.m_end;
  16. }
  17. };
  18. bool compUp(Program p1, Program p2)
  19. {
  20. return p1.m_end < p2.m_end;
  21. }
  22. bool compDown(Program p1, Program p2)
  23. {
  24. return p1.m_end >p2.m_end;
  25. }
  26. int bestArrange(Program inPs[], int m_num,int timepoint)
  27. {
  28. sort(inPs, inPs + m_num, compUp); //1.按end时间排序
  29. for (int i = 0; i < m_num; i++)
  30. {
  31. cout<<"inPs[i] start="<<inPs[i].m_start<<",,,,,,end="<<inPs[i].m_end<<endl;
  32. }
  33. int result = 0;
  34. cout <<"******************"<<endl;
  35. for (int i = 0; i < m_num; i++) //2.遍历所有的会议
  36. {
  37. if (timepoint <= inPs[i].m_start) //3.当前时间
  38. {
  39. result++;
  40. timepoint = inPs[i].m_end; //4.当前时间=会议结束时间
  41. cout << "inPs[i] start=" << inPs[i].m_start << ",,,,,,end=" << inPs[i].m_end << endl;
  42. }
  43. }
  44. return result;
  45. }
  46. void BestArrange_main_test()
  47. {
  48. Program parr[5] = { Program(7, 8),Program(8,10),Program(9, 12),Program(10,15) ,Program(7, 15)};
  49. int m_rc = bestArrange(parr,5,7);
  50. cout<<"返回的值:m_rc="<< m_rc<<endl;
  51. }
  52. void BestArrange_main()
  53. {
  54. cout<<"*********BestArrange_main************"<<endl;
  55. BestArrange_main_test();
  56. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/182136
推荐阅读
相关标签
  

闽ICP备14008679号