活动选择(贪心)

来源:互联网 发布:白鹿原 冷先生 知乎 编辑:程序博客网 时间:2024/05/18 06:44

活动选择

Time Limit: 1000MSMemory Limit: 65536KB

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

68 109 1611 1614 1510 147 11

Example Output

1,5,4

Hint

代码如下:

#include<stdio.h>#include<stdlib.h>struct{    int a,b,c;} k[101],t;int main(){    int i,n,j;    scanf("%d",&n);    for(i=0; i<n; i++)    {        scanf("%d%d",&k[i].a,&k[i].b);        k[i].c=i+1;    }    for(i=0; i<n-1; i++)    {        for(j=0; j<n-1-i; j++)        {            if(k[j].b>k[j+1].b)            {                t=k[j];                k[j]=k[j+1];                k[j+1]=t;            }        }    }    int num=0;    int s=0;    int r[101];    for(i=0; i<n; i++)    {        if(k[i].a>=s)        {            s=k[i].b;            r[num++]=k[i].c;        }    }    for(i=0;i<=num-1;i++)    {     if(i==num-1)        printf("%d",r[i]);     else        printf("%d,",r[i]);     }}


1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 驾驶证过期了6年怎么办 驾驶证过期7个月怎么办 驾驶换证过期了怎么办 和喜欢的人聊天冷场怎么办 老公和小三有了小孩怎么办 战网账号忘记了怎么办 战网邮箱忘了怎么办 捷信分期逾期了怎么办 欠捷信7万还不了怎么办 苹果6s阴阳屏怎么办 碰到碰瓷的人怎么办 如果遇到碰瓷的怎么办 对交通事故责任认定书不服怎么办 违停15天没处理怎么办 衣服反光条掉了怎么办 脸过敏起小疙瘩怎么办 过敏怎么办怎么好得快 眉毛在眉骨下面怎么办 踩到地雷怎么办知乎 在边境踩到地雷怎么办 插在花泥里的花怎么办 瓶插绣球花蔫了怎么办 水养绣球花蔫了怎么办 鲜切绣球花蔫了怎么办 崩坏2仓库满了怎么办 dnf88级没任务了怎么办 0号柴油冻住了怎么办 不小心喝了生水怎么办 不小心吃了蟑螂怎么办 以租代购还不起怎么办 孩子被教官打了怎么办 三岁宝宝叛逆期怎么办 三岁宝宝很叛逆怎么办 孩子不听话怎么办有什么方法呢 打了三岁的宝宝怎么办 2岁半宝宝不听话怎么办 心里素质不好容易紧张怎么办 孩子二年级成绩差怎么办 遇到素质低的人怎么办 孩子上课注意力不集中怎么办 素质报告册丢了怎么办