贪心C 活动选择
来源:互联网 发布:mac删除系统文件 编辑:程序博客网 时间:2024/06/01 20:24
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
#include <stdio.h>struct hd{ int b; int e; int h; //存输入时的顺序序号,可以在结构体里定义,输出的时候不输出,只赋值} data[110],c;int main(){ int n,i,j; int s[110]= {0}; //定义一个新的数组来存选入最后序列的序号 scanf("%d",&n); for(i=1; i<=n; i++) { scanf("%d %d",&data[i].b,&data[i].e); data[i].h=i; //输入时的序号 } for(i=1; i<=n-1; i++) //将结束的时间按照升序的序列排序,冒泡排序 { for(j=1; j<=n-i-1; j++) { if(data[j].e>=data[j+1].e) { c=data[j]; data[j]=data[j+1]; data[j+1]=c; } } } int timestart=0; //储存承接变量:上一个的结束时间 int num=0; //新s数组的个数 for(i=1; i<=n; i++) { if(data[i].b>=timestart) { s[num]=data[i].h; num++; //共num个 timestart=data[i].e; } }for(i=0; i<=num-2; i++) //共num个,从0开始所以i<num-1 { printf("%d,",s[i]); } //输出前num-1个 printf("%d\n",s[i]); //最后一个单独输出 return 0;}
阅读全文
0 0
- 贪心C 活动选择
- 贪心算法-活动选择
- 活动选择问题 贪心
- 活动选择 贪心
- 贪心:活动选择问题
- 活动选择(贪心)
- 活动选择问题(贪心)
- 贪心 -- 活动选择
- 贪心之活动选择
- 【贪心】活动选择
- 贪心算法活动选择问题
- 贪心算法---活动选择问题
- 贪心法 活动选择问题
- 贪心算法-活动选择问题
- 2073 活动选择问题【贪心】
- 活动选择问题(贪心)
- 贪心算法--活动选择问题
- 贪心 活动选择问题 OJ
- 01-复杂度1 最大子列和问题(20 分)
- this call apply
- 数据结构 链表的基本操作(C语言)
- c++笔记——运算符重载
- HDOJ2046
- 贪心C 活动选择
- Mongodb 常用命令--学习2
- CCF推荐会议和期刊----网络空间安全
- leetcode第三题Longest Substring Without Repeating Characters
- 模板与STL的简单入门
- 贪心D 最小拦截系统
- hibernate和mybatis的比较
- 贪心E 为地震后的灾民采购大米
- html link canonical