C语言 贪心 活动选择问题

刺骨的言语ヽ痛彻心扉 2022-06-01 08:05 252阅读 0赞

活动选择问题

Time Limit: 1000MS Memory Limit: 65536KB

Submit Statistic

Problem Description

sdut 大学生艺术中心每天都有n个活动申请举办,但是为了举办更多的活动,必须要放弃一些活动,求出每天最多能举办多少活动。

Input

输入包括多组输入,每组输入第一行为申请的活动数n(n<100),从第2行到n+1行,每行两个数,是每个活动的开始时间b,结束时间e;

Output

输出每天最多能举办的活动数。

Example Input

  1. 12
  2. 15 20
  3. 15 19
  4. 8 18
  5. 10 15
  6. 4 14
  7. 6 12
  8. 5 10
  9. 2 9
  10. 3 8
  11. 0 7
  12. 3 4
  13. 1 3

Example Output

  1. 5
  2. #include <stdio.h>
  3. int main()
  4. {
  5. int n;
  6. while(scanf("%d", &n) != EOF)
  7. {
  8. int s1[200];
  9. int s2[200];
  10. int i, j, t;
  11. for(i = 0; i < n; i++)
  12. {
  13. scanf("%d %d", &s1[i], &s2[i]);
  14. }
  15. for(i = 0; i < n - 1; i++)
  16. {
  17. for(j = 0; j < n - i - 1; j++)
  18. {
  19. if(s2[j] > s2[j + 1])
  20. {
  21. t = s2[j];
  22. s2[j] = s2[j + 1];
  23. s2[j + 1] = t;
  24. t = s1[j];
  25. s1[j] = s1[j + 1];
  26. s1[j + 1] = t;
  27. }
  28. else if(s2[j] == s2[j + 1])
  29. {
  30. if(s1[j] > s1[j + 1])
  31. {
  32. t = s2[j];
  33. s2[j] = s2[j + 1];
  34. s2[j + 1] = t;
  35. t = s1[j];
  36. s1[j] = s1[j + 1];
  37. s1[j + 1] = t;
  38. }
  39. }
  40. }
  41. }
  42. i = 0;
  43. int count = 0;
  44. int end = 0;
  45. while(i < n)
  46. {
  47. if(s1[i] >= end)
  48. {
  49. count++;
  50. end = s2[i];
  51. }
  52. i++;
  53. }
  54. printf("%d\n", count);
  55. }
  56. return 0;
  57. }

发表评论

表情:
评论列表 (有 0 条评论,252人围观)

还没有评论,来说两句吧...

相关阅读