当前位置: 首页 > news >正文

多处最优服务次序问题——算法设计与分析(C实现)

    问题描述:设有n个顾客同时等待一项服务。顾客i需要的服务时间为t_{i}(1\leq i\leq n),共有s处可以提供此项服务。应该如何安排n个顾客的服务次序,才能使平均等待时间达到最小?平均等待时间是n个顾客的等待服务时间的总和除以n。

    算法设计:对于给定的n个顾客需要的服务时间和s的值,计算最优服务次序。

    数据输入:由文件input.txt给出输入数据。第1行有2个正整数n和s,表示有n个顾客且有s处可以提供服顾客需要的服务。接下来的1行中有n个正整数,表示n个顾客需要的服务时间。

    结果输出:将计算的最小平均等到时间输出到文件output.txt。

基本思想:

  • 该题是贪心算法的典型,只需要将所有的任务按照截至时间递增进行排序,然后将任务逐个分配给每一个服务器。即将等待的人逐个分配到每一个服务处。
  • 重在于统计每一个任务等待时间,然后计算平均等待时间
  • 需要注意的是,这里的等待时间是相对于完成任务的时间点,等待时间包括完成任务所花费的时间和等待分配到的时间,即等待时间=执行时间+执行前等待分配的时间

具体代码实现如下:

#include<stdio.h>//选出当前等待时间最小的服务处 
int SelectMin(int* wait,int s)
{int min = wait[0];int index = 0;for (int i = 0; i < s; i++) {if (min > wait[i]) {min = wait[i];index = i;}}return index;
}//安排顾客,计算平均等待时间 
int Greedy(int* wait, int *arr, int n,int s) 
{int sum = 0;int index;for (int i = 0; i < n; i++) {index = SelectMin(wait, s);wait[index] += arr[i];sum += wait[index];}return sum / n;	
}//对顾客的执行时间进行从小到大的排序 
void sort(int* arr,int n)
{int temp;for(int i=0;i<n;i++){for(int j=0;j<i;j++){if(arr[j]>arr[j+1]){temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}}
}int main()
{int n,s,res;freopen("input.txt","r",stdin);freopen("output.txt","w",stdout);scanf("%d %d",&n,&s);//从文件中取出顾客人数和服务处数量 int wait[s];int arr[n];for(int i=0;i<n;i++){scanf("%d",&arr[i]);}sort(arr, n);		res= Greedy(wait, arr, n, s);printf("%d",res);return 0;
}

现在让我们来检验一下代码的正确性:

(1)首先在程序所在路径下建立两个题目所需要的文本文件:input.txt  output.txt

(2)在input.txt文件中输入相关数据:

(3)将代码运行起来,下图为代码运行成功的标志:

 (4)那么接下来我们进入输出文件output.txt,查看代码运行的具体效果

 

  

   经过检验发现,该代码实现的该实例时正确的,大家可以对其他实例进行一个验证,也可可以将代码自行更改,增加其可行性~

相关文章:

多处最优服务次序问题——算法设计与分析(C实现)

问题描述&#xff1a;设有n个顾客同时等待一项服务。顾客i需要的服务时间为&#xff0c;共有s处可以提供此项服务。应该如何安排n个顾客的服务次序&#xff0c;才能使平均等待时间达到最小&#xff1f;平均等待时间是n个顾客的等待服务时间的总和除以n。 算法设计&#xff1a;对…...

2023 年 IntelliJ IDEA 下载安装教程,超详细图文教程,亲测可用

. IDEA 下载 1、打开浏览器输入https://www.jetbrains.com/&#xff0c;进入 Jetbrains官网&#xff0c;点击 Developer Tools&#xff0c;再点击 Intellij IDEA 2、点击中间的 Download&#xff0c;进入IDEA下载界面 3、选择左边的 Ultimate 版本进行下载安装。Ultimate 版…...

前端框架比较:Vue.js、React、AngularJS三者的优缺点和应用场景

章节一&#xff1a;引言 在当前的互联网开发中&#xff0c;前端框架已经成为了不可或缺的一部分。然而&#xff0c;前端框架如此之多&#xff0c;该如何选择呢&#xff1f;Vue.js、React和AngularJS是目前比较受欢迎的三个前端框架&#xff0c;它们各自有着不同的优缺点和应用…...

JavaScript中的数据可视化和动画效果

摘要&#xff1a; JavaScript是一种强大而灵活的编程语言&#xff0c;被广泛用于网页开发和交互设计。在数据可视化和动画效果方面&#xff0c;JavaScript提供了丰富的工具和库&#xff0c;使开发者能够创建出令人印象深刻的交互式数据可视化和动画效果。本文将介绍JavaScript中…...

如何搭建在线产品手册

在现代社会&#xff0c;随着科技的发展&#xff0c;越来越多的企业将目光投向互联网&#xff0c;并将自己的产品推向了线上。而对于这些线上产品&#xff0c;拥有一份完备的、易用、高质量的在线产品手册显得尤为重要。 那么如何才能搭建一份高质量且易用的在线产品手册呢&…...

Java版企业电子采购招标系统源码

一、立项管理 1、招标立项申请 功能点&#xff1a;招标类项目立项申请入口&#xff0c;用户可以保存为草稿&#xff0c;提交。 2、非招标立项申请 功能点&#xff1a;非招标立项申请入口、用户可以保存为草稿、提交。 3、采购立项列表 功能点&#xff1a;对草稿进行编辑&#x…...

【操作系统复习】第6章 虚拟存储器 2

请求分页中的内存分配 在为进程分配物理块时&#xff0c;要解决下列的三个问题&#xff1a; 1. 保证进程可正常运行所需要的最少物理块数 2. 每个进程的物理块数&#xff0c;是固定值还是可变值&#xff08;分配策略&#xff09; 3. 不同进程所分配的物理块数&#xff…...

【OAI】OAI5G核心网VPP-UPF网元分析

文章目录 VPP_UPF_CONFIG_GENERATION.mdVPP UPF Configuration GenerationEnvironment variablesInterfacesInterface Configuration ExamplesCentral UPFA-UPFI-UPFUL CL FEATURE_SET.mdVPP_UPG_CLI参考文献 VPP_UPF_CONFIG_GENERATION.md VPP UPF Configuration Generation …...

【上进小菜猪】使用Ambari提高Hadoop集群管理和开发效率:提高大数据应用部署和管理效率的利器

&#x1f4ec;&#x1f4ec;我是上进小菜猪&#xff0c;沈工大软件工程专业&#xff0c;爱好敲代码&#xff0c;持续输出干货&#xff0c;欢迎关注。 介绍 Hadoop是一种开源的分布式处理框架&#xff0c;用于在一组低成本硬件的集群上存储和处理大规模数据集。Ambari是一种基…...

Day3--C高级3

一.编写一个名为myfirstshell.sh的脚本&#xff0c;它包括以下内容。 1、包含一段注释&#xff0c;列出您的姓名、脚本的名称和编写这个脚本的目的 2、和当前用户说“hello 用户名” 3、显示您的机器名 hostname 4、显示上一级目录中的所有文件的列表 5、显示变量PATH和HO…...

第9章 CURD操作与MemoryCache缓存的强制清理的实现

1 重构 Data.Repository<TEntity> using Core.Caching; using Core.Domain; using Core.Events; using Microsoft.EntityFrameworkCore; namespace Data { ///<typeparam name"TEntity">泛型类型实例(这里特指:1个指定实体的类型实例)。</typepa…...

TCP 协议特性详解

TCP 协议特性总结 TCP协议特点TCP协议段格式TCP原理确认应答&#xff08;安全机制&#xff09;超时重传&#xff08;安全机制&#xff09;连接管理&#xff08;安全机制&#xff09;(面试高频题)三次握手四次挥手 滑动窗口&#xff08;效率机制&#xff09;流量控制&#xff08…...

电子招投标采购系统源码:采购过程更规范,更透明

满足采购业务全程数字化&#xff0c; 实现供应商管理、采购需求、全网寻源、全网比价、电子招 投标、合同订单执行的全过程管理。 电子招标采购&#xff0c;是指在网上寻源和采购产品和服务的过程。对于企业和企业主来说&#xff0c;这是个既省钱又能提高供应链效率的有效方法…...

一篇了解智慧网关

智慧网关是指基于互联网技术的智能网关&#xff0c;能够连接不同的物联网设备和传感器&#xff0c;实现数据采集、信息传递、远程控制、通信管理等功能。作为物联网架构中的核心设备之一&#xff0c;智慧网关在智能家居、智慧城市、智能制造、智能交通、智能农业等领域得到了广…...

自学软件测试,从10K到40K的技术路线,也就是这些东西...

如果有一天我从梦中醒来时&#xff0c;发现自己的几年自动化测试工程师经验被抹掉&#xff0c;重新回到了一个小白的状态。我想要重新自学自动化测试&#xff0c;然后找到一份自己满意的测试工作&#xff0c;我想大概只需要6个月的时间就够了&#xff0c;如果比较顺利的话&…...

Qt libqrencode二维码——QtWidgets

前言 之前写过二维码的程序&#xff0c;但是在U盘上&#xff0c;没带&#xff0c;又重新找的网上资料写的。 网上二维码的生成&#xff0c;大多用到是第三方库libqrencode,这也一样&#xff1a; 效果图 本来是个动图的&#xff0c;都被和谐了&#xff0c;所以换成截图&…...

KDZD绝缘子表面电导盐密度测试仪

一、简介 智能电导盐密测试仪&#xff0c;也称为直读式等值盐密度测试仪&#xff0c;专为测试智能电导盐密度而设计。系统内置智能电导盐密度计算公式&#xff0c;读数直观。 人机交互采用真彩TFT液晶屏&#xff0c;操作简单&#xff0c;测试参数和结果一目了然。仪器自带微型打…...

如何降低电动汽车软件的开发成本和风险?

大多数的汽车制造商无法从销售电动汽车&#xff08;EV&#xff09;中获得利润&#xff0c;但计划快速进入市场的电动汽车初创公司是无法承担这样的损失的。 由于飙升的电池价格、高昂的组件成本和低迷的销量削弱了盈利能力&#xff0c;电动汽车初创公司必须将视线转到软件开发…...

使用pytest和allure框架实现自动化测试报告优化

目录 -x出现一条测试用例失败就退出测试 生成测试报告json pytest&#xff1a; 需要安装pytest和pytest-html(生成html测试报告&#xff09; pip install pytest 和 pip install pytest-html 命名规则 Pytest单元测试中的类名和方法名必须是以test开头,执行中只能找到test开头…...

chatGPT免费站点分享

下面的应该都能用&#xff0c;试试吧... ChatGPT是一种人工智能聊天机器人&#xff0c;能够生成虚拟语言和交互回复。使用ChatGPT&#xff0c;您可以与机器人进行真实的交互&#xff0c;让机器人根据您提出的问题或请求来生成回复。但是&#xff0c;在使用ChatGPT时&#xff0…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络&#xff0c;将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具&#xff0c;支持 Chrome、Firefox、Safari 等主流浏览器&#xff0c;提供多语言 API&#xff08;Python、JavaScript、Java、.NET&#xff09;。它的特点包括&a…...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时&#xff0c;需结合业务场景设计数据流转链路&#xff0c;重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点&#xff1a; 一、核心对接场景与目标 商品数据同步 场景&#xff1a;将1688商品信息…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

WebRTC从入门到实践 - 零基础教程

WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC&#xff1f; WebRTC&#xff08;Web Real-Time Communication&#xff09;是一个支持网页浏览器进行实时语音…...

windows系统MySQL安装文档

概览&#xff1a;本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容&#xff0c;为学习者提供全面的操作指导。关键要点包括&#xff1a; 解压 &#xff1a;下载完成后解压压缩包&#xff0c;得到MySQL 8.…...

软件工程 期末复习

瀑布模型&#xff1a;计划 螺旋模型&#xff1a;风险低 原型模型: 用户反馈 喷泉模型:代码复用 高内聚 低耦合&#xff1a;模块内部功能紧密 模块之间依赖程度小 高内聚&#xff1a;指的是一个模块内部的功能应该紧密相关。换句话说&#xff0c;一个模块应当只实现单一的功能…...