首页 > 其他分享 >简单课程安排问题

简单课程安排问题

时间:2024-01-20 11:44:07浏览次数:33  
标签:cout 简单 int 安排 si 课程 act fi

问题描述:假定某大学有门课程需要使用同一个教室来上课。显然,我们不能在一个教室同时上两门或多门课程。因此,每门课使用教室的方式是独享的。假定这n门课程的集合为C={c1,c2,...,cn}。每门课使用教室的时间为{si,fi},i=1,2,...,n。这里si=开始时间,fi=结束时间。假设我们的目标是容纳尽可能多的课程门数,请你为此设计一个算法。

算法设计:

程序实现:

 1 #include<iostream>
 2 
 3 #include<algorithm>
 4 
 5 using namespace std;
 6 
 7 struct act // si fi是同一课程的开始和结束时间,用结构体数组存储表示
 8 
 9 {
10 
11 int si ;
12 
13 int fi ;
14 
15 };
16 
17 bool cmp(act a,act b) //比较各门课程结束时间
18 
19 {
20 
21 return a.fi < b.fi;
22 
23 }
24 
25 void greedychoose(int n,act a[])
26 
27 {
28 
29 int count=1,i=0; //初始化,将第一个活动放入a[0]
30 
31 for( int j=1;j<n;j++ ) //往下依次找,若当前课程开始时间大于等于上一门课程的结束时间则选择
32 
33 {
34 
35 if(a[j].si>=a[i].fi)
36 
37 {
38 
39 i=j;
40 
41 count++;
42 
43 }
44 
45 }
46 
47 cout <<"选择的活动数量为:"<< count << endl ;
48 
49 }
50 
51 int main()
52 
53 {
54 
55 int n;
56 
57 cout << "请输入活动数目" <<endl;
58 
59 cin >> n ;
60 
61 act a[20] ;
62 
63 cout << "请依次输入活动的开始时间和结束时间"<<endl;
64 
65 for(int i=0;i<n;i++)
66 
67 {
68 
69 cin >> a[i].si >> a[i].fi ;
70 
71 }
72 
73 sort(a,a+n,cmp);
74 
75 cout<<"按结束时间升序排序结果为:"<<endl;
76 
77 for(int j=0;j<n;j++)
78 
79 {
80 
81 cout << "si="<< a[j].si << " " << "fi=" << a[j].fi << endl ;
82 
83 }
84 
85 greedychoose(n,a);
86 
87 return 0;
88 
89 }

结果输出:

标签:cout,简单,int,安排,si,课程,act,fi
From: https://www.cnblogs.com/doris510/p/17976176

相关文章

  • 浅谈C++简单前缀和实现
    浅谈前缀和2023.9.28\(tips:\)文章持续更新中,欢迎关注\(upd:\)文章从洛谷博客迁移至博客园(\(2024.1.19\))洛谷B3612【深进1.例1】求区间和题目大E:有一个内部元素个数为\(n\)的数组\(a\),现在有m次询问,求a[l]到a[r]之间所有元素的和朴素的做法:#include<iostream>usin......
  • FFT数据简单校正频率,相位,幅度
    BOOL CWaveBox::DataFftInfo(short*pData,intnCount,FFT_INFO&fft){ Value2D *pIn,*pOut; int i,nPow,nIndex,nAllCount,nRealCount,nHi,nTotal; int TopIndex[FFT_FI_CountMax*2]; Value2D v,v1,v2; double ang1,ang2,ang,dIvt,dBase,dSu......
  • BackgroundWorker 简单示例()
    //异步使用前一定要把下面的代码进行初始化才能成功调用//if(!bgwtemp.IsBusy)//{//bgwtemp.RunWorkerAsync();//}publicBackgroundWorkerbgwtemp=null;publicForm2(){InitializeComponent();bgwtemp=newBackgroundWorker();bgwtemp.DoWork+=bgwtemp_work;......
  • 单机变频器简单启停电路
        西门子参数默认 仅供参考......
  • SkyWalking服务监控简单配置【Windows版本】
    SkyWalking是什么skywalking是一个可观测性分析平台和应用性能管理系统专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。下载官网:https://skywalking.apache.org/下载地址:https://skywalking.apache.org/downloads/中文文档:https://skyapm.github.io/doc......
  • KY129 简单计算器C++
    、这是目前阶段做的最难最吃力的题目。调试了一遍又一遍去看逻辑上出现的各种问题。。。#include<iostream>#include<string>#include<stack>#include<map>usingnamespacestd;intmain(){map<char,int>m={{'+',0},{'-',0},......
  • HarmonyOS4.0系列——03、声明式UI、链式编程、事件方法、以及自定义组件简单案例
    HarmonyOS4.0系列——03、声明式UI、链式编程、事件方法、以及自定义组件简单案例声明式UIArkTS以声明方式组合和扩展组件来描述应用程序的UI,同时还提供了基本的属性、事件和子组件配置方法,帮助开发者实现应用交互逻辑。如果组件的接口定义没有包含必选构造参数,则组件后面的“()”......
  • 定向减免!函数计算让 ETL 数据加工更简单
    业内较为常见的高频短时ETL数据加工场景,即频率高时延短,一般费用大头均在函数调用次数上,推荐方案一般为攒批处理,高额的计算成本往往令用户感到头疼,函数计算推出定向减免方案,让ETL数据加工更简单、更自动化、容错能力更强。自2024年01月01日0时起,函数计算定向减免来自阿里云消息......
  • Flask的简单学习
    简介Flask是一个非常小的PythonWeb框架,被称为微型框架;只提供了一个稳健的核心,其他功能全部是通过扩展实现的;意思就是我们可以根据项目的需要量身定制,也意味着我们需要学习各种扩展库的使用。flask的安装pipinstallflask创建一个flask项目目录结构如下app.py主文件,所......
  • 阿里云 PolarDB 开发者大会首度召开,让数据库开发像“搭积木”一样简单
    1月17日,首届阿里云PolarDB开发者大会在京举办,中国首款自研云原生数据库PolarDB发布“三层分离”全新版本,基于智能决策实现查询性能10倍提升、节省50%成本。面向开发者,阿里云全新推出数据库场景体验馆、训练营等系列新举措,广大开发者可率先免费体验PolarDB数据库核心特......