活动选择

电玩女神 2022-07-13 03:49 231阅读 0赞

Problem Description

学校的大学生艺术中心周日将面向全校各个学院的学生社团开放,但活动中心同时只能供一个社团活动使用,并且每一个社团活动开始后都不能中断。现在各个社团都提交了他们使用该中心的活动计划(即活动的开始时刻和截止时刻)。请设计一个算法来找到一个最佳的分配序列,以能够在大学生艺术中心安排不冲突的尽可能多的社团活动。
比如有5个活动,开始与截止时刻分别为:

最佳安排序列为:1,4,5。

Input

第一行输入活动数目n(0<n<100);
以后输入n行,分别输入序号为1到n的活动使用中心的开始时刻a与截止时刻b(a,b为整数且0<=a,b<24,a,b输入以空格分隔)。

Output

输出最佳安排序列所包含的各个活动(按照活动被安排的次序,两个活动之间用逗号分隔)。

Example Input

6
8 10
9 16
11 16
14 15
10 14
7 11

Example Output

1,5,4

  1. #include<stdio.h>
  2. struct node
  3. {
  4. int ans;
  5. int again;
  6. int end;
  7. }a[100],abc;
  8. int main()
  9. {
  10. int n;
  11. int i,j;
  12. int k;
  13. int b[100];
  14. int u;
  15. scanf("%d",&n);
  16. for(i=0;i<n;i++)
  17. {
  18. scanf("%d%d",&a[i].again,&a[i].end);
  19. a[i].ans=i+1;
  20. }
  21. for(i=0;i<n-1;i++)
  22. {
  23. for(j=0;j<n-1-i;j++)
  24. {
  25. if(a[j].end>a[j+1].end)
  26. {
  27. abc=a[j];
  28. a[j]=a[j+1];
  29. a[j+1]=abc;
  30. }
  31. }
  32. }
  33. k=0;
  34. u=0;
  35. for(i=0;i<n;i++)
  36. {
  37. if(a[i].again>=k)
  38. {
  39. k=a[i].end;
  40. b[u++]=a[i].ans;
  41. }
  42. }
  43. for(i=0;i<u;i++)
  44. {
  45. if(i!=u-1)
  46. printf("%d,",b[i]);
  47. else
  48. printf("%d\n",b[i]);
  49. }
  50. return 0;
  51. }

发表评论

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

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

相关阅读

    相关 活动选择问题

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

    相关 活动选择

    Problem Description 学校的大学生艺术中心周日将面向全校各个学院的学生社团开放,但活动中心同时只能供一个社团活动使用,并且每一个社团活动开始后都不能中断。现

    相关 活动选择

    活动选择 Problem Description 学校的大学生艺术中心周日将面向全校各个学院的学生社团开放,但活动中心同时只能供一个社团活动使用,并且每一个社团活动开始后

    相关 活动选择

    活动选择 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 学校的大学生艺术中心周日将面