活动选择
活动选择
Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic
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
01 | #include<stdio.h> |
02 | struct dog |
03 | { |
04 | int s, e; |
05 | int num; |
06 | } a[101], t; |
07 | int main() |
08 | { |
09 | int n, i, j, min; |
10 | scanf ( “%d” , &n); |
11 | for (i = 0; i < n; i++) |
12 | { |
13 | scanf ( “%d%d” , &a[i].s, &a[i].e); |
14 | a[i].num = i + 1; |
15 | } |
16 | for (i = 0; i < n - 1; i++) |
17 | { |
18 | for (j = i + 1; j < n; j++) |
19 | { |
20 | if (a[i].e > a[j].e) |
21 | { |
22 | t = a[i]; |
23 | a[i] = a[j]; |
24 | a[j] = t; |
25 | } |
26 | } |
27 | } |
28 | printf ( “%d” , a[0].num); |
29 | min = a[0].e; |
30 | for (i = 1; i < n; i++) |
31 | { |
32 | if (a[i].s >= min) |
33 | { |
34 | printf ( “,%d” , a[i].num); |
35 | min = a[i].e; |
36 | } |
37 | } |
38 | printf ( “\n” ); |
39 | return 0; |
40 | } |
活动选择
Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic
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
还没有评论,来说两句吧...