会场安排问题——算法实现(C实现)

news2024/10/5 20:19:39

问题描述:加入要在足够多的会场里安排一批活动,并希望使用尽可能少的会场。设计一个有效的贪心算法进行安排。(这个问题实际上是著名的图着色问题。若每个活动作为图的一个顶点,不相容活动之间用边相连。使相连顶点着有不同颜色的最小着色数,相当于找的最小会场数)

算法分析:对于给定的k个待安排的活动,计算使用最少的会场的时间表

数据输入:由文件input.txt给出输入数据。第一行有1个正整数k,表示有k个待安排的活动。接下来的k行中,每行有两个正整数,分别代表k个安排的活动的开始时间和结束时间,时间以0点开始的分钟计。

结果输出:将计算的最小最少会场数输出到文件putput.txt中。

分析:假设我们要进行验证的数据如下

5
1 23
12 28
25 35
27 80
36 50

(1)用一个变量n记录活动场次为5,即n=5

(2)用两个数组start[] 和 end[] 分别将活动的开始时间和结束时间保存下来

(3)需要分别对开始时间和结束时间进行升序排列,这里我们使用一个函数sort()对数组进行排列

(4)用start[1]与end[1]进行比较,如果Start比end小,则会场数+1;反之,使用下一个end与该start进行比较。直到将所有start比较完毕后,可将会场总数计算出来。

start[1]start[2]start[3]start[4]start[5]
112252736
end[1]end[2]end[3]end[4]end[5]
2328355080

具体代码实现如下:

#include<stdio.h>
#include<stdlib.h>



void sort(int a[],int n)//排序 (对活动的时间进行一个升序的排序) 
{
	for(int i=0;i<n;i++)
	{
		for(int j=i;j<n;j++)
		{
			if(a[i]>a[j])
			{
				int temp=a[i];
				a[i]=a[j];
				a[j]=temp;
			}
		}
	}
}

int main()
{
	int n; //活动个数 
	int start[100]; //各活动开始时间
    int end[100]; //各活动结束时间
    int i, j=0; //i,j分别指向开始时间和结束时间
    int sum=0;	//记录最终会场个数 的结果 
    
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
    
    scanf("%d",&n);	//从文件中读取活动的个数 
 
    for (i=0;i<n;i++)//从文件中读取每个活动的开始时间和结束时间 
    	scanf("%d %d",&start[i], &end[i]);
    	
    sort(start,n);//对活动的开始时间进行一个排序    
 	sort(end,n);//对活动的结束时间进行一个排序 
		 
	for(int i=0;i<n;i++)
	{
		if(start[i]<end[j])
           sum++;               //如果开始时间小于结束时间则另开辟一个会场
        else  
            j++;               //否则和下一个结束时间进行比较
	}	
	
	printf("%d",sum);//将结果保存到文件中 
	return 0;  
}

 那让我们来验证一下这个代码的正确性吧~

(1)在代码相同路径下建立两个题目要求所需要的文件output.txt和input.txt

 (2)在intput.txt文件中输入所要验证的数据信息

 (3)运行代码

 

(4) 在文件output.txt中查看该文件是否有问题

 

这样,我们的程序就验证完毕啦~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/467151.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据库原理容易出错的点

一个数据库只存在一个内模式和一个模式&#xff0c;可以存在多个外模式除了删除表或视图的使用的是DELETE以外其他数据库对象均是使用DROP遵守两段封锁的协议的并发事务一定是可串行化的哪些情况下不适合创建索引&#xff1a; 对于查询过程中很少使用或参考的列对于那些只有很少…

【无人车】用于无人地面车辆的路径跟踪算法(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

CMIP6数据处理:WRF模式动力降尺度、单点降尺度、统计方法区域降尺度、SWAT数据、Biome-BGC数据制备

查看原文>>>WRF模式、CMIP6数据处理、机器学习气象海洋水文应用、python地球科学 目录 CMIP6月数据、日数据、全球VIPPHEN物候数据、ERA5数据 一、CMIP6中的模式比较计划 二、数据下载 三、基础知识 四、单点降尺度 五、统计方法的区域降尺度 六、基于WRF模式…

助力低碳出行 | 基于ACM32 MCU的电动滑板车方案

前言 随着智能科技的快速发展&#xff0c;电动滑板车的驱动系统也得到了长足的发展。国内外的电动滑板车用电机驱动系统分为传统刷式电机和无刷电机两种类型。其中&#xff0c;传统的刷式电机已经逐渐被无刷电机所取代&#xff0c;无刷电机的性能和寿命都更出色&#xff0c;已…

STM32F4 HAL库使用DMA进行ADC采样实时发送波形到串口显示(包含傅里叶变换)

1.总体逻辑 按下STM32F4的KEY0按键&#xff0c;通过外部中断的方式对按键进行检测&#xff0c;然后开启一次带DMA的固定点数的ADC采集&#xff0c;采集完成后在DMA的中断发送采集到的数据&#xff0c;然后清空数据区准备下一次的按键中断。电脑接受到串口数据后对数据进行简单…

大厂齐出海:字节忙种草,网易爱社交

配图来自Canva可画 随着国内移动互联网红利逐渐触顶&#xff0c;互联网市场日趋饱和&#xff0c;国内各互联网企业之间的竞争便愈发激烈起来。在此背景下&#xff0c;广阔的海外市场就成为了腾讯、阿里、字节、京东、拼多多、百度、网易、快手、B站等互联网公司关注和争夺的重…

算法--前缀和技巧 (蓝桥杯123-灵能传输--求和)

文章目录 什么是前缀和用途什么时候用java的前缀和例题[蓝桥杯 2022 省 A] 求和题目描述思路代码 [蓝桥杯 2021 国 ABC] 123题目描述思路代码 [蓝桥杯 2019 省 B] 灵能传输(蓝桥杯96%&#xff0c;洛谷ac)题目描述思路代码 什么是前缀和 如果一个数组a的元素为 a 1 , a 2 , a 3…

Springboot +Flowable,详细解释啥叫流程实例(一)

一.简介 上一篇中学习了Flowable 中的流程模板&#xff08;流程定义&#xff09;的部署问题&#xff0c;这一篇来学习什么叫流程实例。 部署之后的流程模板&#xff0c;还不能直接运行&#xff0c;例如我们部署了一个请假流程&#xff0c;现在 张三想要请假&#xff0c;他就需…

WhatsApp多开攻略,低成本高效率多开账号聊单的方法献上~

WhatsApp多开攻略&#xff01;低成本高效率多开账号聊单的方法献上~ WhatsApp多开是指在同一台设备上同时登录多个WhatsApp账号&#xff0c;这种技术通常被跨境电商从业者用于在不同的WhatsApp账号之间切换&#xff0c;以便更好地管理跨境电商业务。 图中工具&#xff1a; ss客…

lazada按关键字搜索商品API接口

lazada按关键字搜索商品 API接口&#xff0c;在 lazada上搜索产品&#xff0c;如果只需要搜索单个产品的话&#xff0c;那么直接在搜索框输入“关键字”即可&#xff0c;如果需要多个产品&#xff0c;那么则需要进行关键字扩展。 lazada按关键字搜索商品 API接口分为两部分&am…

AI 这是要杀疯啦!

ChatGPT 是基于 GPT 系列大模型开发出来的一个对话场景的 Demo&#xff0c;它已经让我们见识到了大模型的威力。 但有些开发者的胃口不满足于此&#xff0c;已经开始尝试“突破” AI 的边界了&#xff0c;本文推荐 5 个人工智能的开源项目。其中前两个项目&#xff0c;让人细思…

《港联证券》股票必须持仓多久才能卖?股票买入多久显示持仓?

有的新手股民在炒股的时候&#xff0c;对股票的了解是不多的&#xff0c;就会在网上搜索材料来进行学习&#xff0c;那么股票有必要持仓多久才干卖&#xff1f;股票买入多久显现持仓&#xff1f;港联证券为我们预备了相关内容&#xff0c;以供参阅。 股票有必要持仓多久才干卖&…

ADAS辅助驾驶之:BSD盲区监测功能

摘要&#xff1a; 盲点监测系统从技术上主要分为影像和雷达2种&#xff0c;2种技术路线各有优劣。 目录 1、车辆盲区监测系统的定义 2、车辆盲区监测系统原理 3、车辆盲区监测系统硬件安装及标定 4、车辆盲区监测系统发展 1、车辆盲区监测系统的定义 盲区监测系统&#x…

【算法题】2368. 受限条件下可到达节点的数目

题目&#xff1a; 现有一棵由 n 个节点组成的无向树&#xff0c;节点编号从 0 到 n - 1 &#xff0c;共有 n - 1 条边。 给你一个二维整数数组 edges &#xff0c;长度为 n - 1 &#xff0c;其中 edges[i] [ai, bi] 表示树中节点 ai 和 bi 之间存在一条边。另给你一个整数数…

接到“女儿”求救电话 亲妈差点被AI仿声骗了

听到电话里女儿的求救声&#xff0c;慌乱的母亲差点给“绑匪”打钱&#xff0c;但绑匪是假的&#xff0c;女儿的声音也是克隆的。借助最新的AI技术&#xff0c;骗子只要拿到他人3秒的语音&#xff0c;就能快速复制出一模一样的声音&#xff0c;甚至方言和语气也能模仿。 当人们…

vulnhub之AI-Web-1.0

vulnhub之AI-Web-1.0 一、信息收集 1.主机发现 nmap 172.25.0.0-255发现了靶机IP&#xff1a;172.25.0.13 2.端口扫描 nmap -A -sS -sV -Pn -O -p- 172.25.0.13发现80端口是开放的。 3.目录扫描 sudo dirb http://172.25.0.13/发现了robots.txt文件 在对其进行目录二次…

神奇的饼状图:如何用最简单的方式呈现复杂的数据

简介 饼状图顾名思义就是形如圆饼状的图形&#xff0c;它是一种常用的图表类型&#xff0c;通常用于展示数据的占比关系。饼状图通过将一个圆形区域划分为多个子区域&#xff0c;反应出不同子类数据之间的的对比关系以及子类数据在大类中的百分比。饼状图将一个数据集按照每个…

全景丨0基础学习VR全景制作,平台篇第13章:热点功能-总览介绍

全景丨0基础学习VR全景制作&#xff0c;平台篇第13章&#xff1a;热点功能-总览介绍 大家好&#xff0c;欢迎观看蛙色VR官方——后台使用系列课程&#xff01; 一、热点功能概览 热点&#xff0c;指在全景作品中添加各种类型图标的按钮&#xff0c;引导用户通过按钮产生更多的…

你知道C语言函数调用的2种方式吗?传值调用 传址调用

本篇博客会讲解C语言函数调用的2种方式&#xff0c;分别是&#xff1a;传值调用和传址调用。这2种函数调用方式有什么区别呢&#xff1f;为什么会有不同的效果呢&#xff1f;分别有哪些用途呢&#xff1f;下面我会一一展开。 区别 传值调用&#xff0c;即通过传递变量的值来调…

4个python内存性能检测工具:memory_profiler、timeit、line_profiler、heartrate的使用案例

这里总结了4个比较好的python性能检测工具&#xff0c;包括内存使用、运行时间、执行次数等方面。 1、memory_profiler查看内存的使用情况 memory_profiler可以用来测量python进程的内存使用情况。可以按行查看内存的使用情况。 memory_profiler 是一个监控进程内存消耗的模…