基于C语言的外卖优先级问题求解方法
1概述
随着我国经济的快速增长,人们的生活节奏也随之加
快。为了解决人们在快节奏工作和学习中的用餐问题[1],外卖行业大量兴起。由于外卖数量较大,在配送的过程中需要进行优先级调度,以提高效率。
C 语言作为大多数计算机专业学生接触的第一门语
言,其适应性强,运行效率高[2]。它可以实现各类软件的开发,如管理系统、游戏等[3]。同时,C 语言生成目标
代码质量高,程序执行效率高,可移植性好。
为此,采用C 语言解决一个外卖优先级的调度问题,首先给出问题描述,然后给出算法的思路和流程,最后进行仿真。
2程序设计的一般过程
程序设计就是解决一个特定的问题,用计算机语言
对问题进行描述并得出结果。在程序设计的过程中,核心要将自然语言描述转换为计算机可以“识别和接受”的语言,即编程语言。
针对一个现实生活中的实际问题,首先要明确需要解决的问题是什么、已知条件和数据有哪些、如何获得这些数据,然后才能确定解决问题的方法和策略,即选择合适的计算模型、算法和数据结构,并考虑如何检验所实现的程序是否符合设计目标的各项要求,之后才能进一步考虑使用某种计算机语言进行编程,把上述设计思想转换为程序。对于一个不太复杂的问题,在程序设计的过程中,需要对问题进行分析,然后设计出对应的算法,然后根据算法编写相应的程序,在进行调试和测试后可以得到解决实际问题的计算机应用程序。
问题分析是程序设计的第一步,在这个阶段,要明确和理解索要解决的问题是什么,明确程序运行环境和
方式以及相关的限制条件。当数学模型建立后,就可以设计出解题的具体方法和具体步骤,这个过程称为算法设计。之后,选用计算机系统提供的某种程序设计语言,将设计好的算法从非计算机语言的描述形式转换为计算机语言的描述语句形式,这一过程称为编码。最后,设计多种测试用例对程序进行严格的测试,并整理文档。
3问题描述
假设在某外卖系统中存在有N 家外卖店,这些外
卖店由1~N 进行编号。每个外卖店都具有一个优先级,初始时刻优先级为0。
外卖店的优先级会不断发生变化,每经过一个时间单位,如果某外卖店没有收到订单,则其优先级会减少1;反之,如果某外卖店收到订单,则其优先级会增加2。
这里规定:如果某外卖店的优先级在某时刻大于5,则该外卖店会被加入到优先缓存中;反之,若其优先级小于3,则该外卖店会被清除出优先缓存。现在,已知T 时刻以内的M 条订单信息,需要计
算出在T 时刻优先缓存中的外卖店数量。
输入格式为:第一行包含3个整数N、M、T。以下M 行分别表示订单信息,其中每行包含两个整数ts 和id,表示ts 时刻编号id 的外卖店收到一个订单。
4算法实现
使用C 语言对该问题进行求解时,首先需要定义出
相应的数据结构。由于问题中给出了订单信息,因此需基金项目:西安邮电大学创新基金项目(CX2016-07)。作者简介:闫晶(1996-),女,硕士,研究方向:软件工程。
基于C 语言的外卖优先级问题求解方法
闫晶1,王振宇1,2
(1.西安邮电大学计算机学院,西安710121;2.西安灿程教育科技有限公司,西安710049)摘
要:生活中存在着许多优先级问题,如操作系统中的作业排队,银行的优先级调度等。外卖企业大量兴起,解决了人们的用餐问题,为了提高外卖的配送效率,必须对外卖优先级进行处理和调度。采用C 语言对一个外卖优先级问题进行求解,首先给出问题的描述,然后给出算法的流程和步骤,最后得出仿真结果。
关键词:外卖优先级;C
语言;配送效率
要定义一个线性表[4]来存储订单信息,采用顺序存储结构,其中一个成员为二维数组。与此同时,设置一维数组p 来表示优先缓存。
求解时,需要对每一条订单信息以时刻为单位进行遍历,将该时刻收到订单的外卖店编号存入到数组temp 中,同时统计出该时刻未收到订单的外卖店。然后,对每个外卖店的优先级进行调整,存入到数组p 中。最后,在到达T 时刻时,统计优先缓存中的外卖店个数。
求解程序如下所示:
#include <stdio.h>#include <malloc.h>#define MAXSIZE 50struct Order {
int info[MAXSIZE][2];int length;//线性表长度};
int NotIn(int r,int*temp);int NotIn(int r,int*temp){int i;
for (i=0;i<50;i++)
if (temp[i]==r)
return 0;
return 1;}
void main(void){
int N,M,T,i,j,k=0,r,cnt=0;struct Order*L;
int temp[50]={0};//temp 数组用于暂存某时刻收到//订单的外卖店编号
她字组词int p[50]={0};//该数组用于存储每个外卖店的优先//级,初始为0
L=(struct Order*)malloc(sizeof(struct Order*));//申请一个空间
printf ("请输入外卖店数量,订单数量,时刻:\n");scanf ("%d %d %d",&N,&M,&T);printf ("请输入订单信息:\n");for (i=0;i<M;i++)
scanf("%d %d",&L->info[i][0],&L->info[i][1]);L->length=M;
//以时刻为单位进行搜索for (i=1;i<=T;i++){
for (j=0;j<M;j++){
//搜索到i 时刻的订单信息if (L->info[j][0]==i){//收到订单时,优先级增加2
p[L->info[j][1]-1]+=2;//将收到订单的外卖店存//储到数组中
temp[k++]=L->info[j][1];}}
for (r=1;r<=N;r++)
if (NotIn(r,temp))//如果r 不在temp 数组
//中,说明该时刻该外卖店没有收到订单,优先级减少1
{
if (p[r-1]-1>=0)
p[r-1]--;else
p[r-1]=0;
}
for (r=0;r<50;r++)
temp[r]=0;k=0;}
for (i=0;i<N;i++)
if (p[i]>5)
小学宪法宣传标语
cnt++;
农村宅基地使用权继承printf ("优先缓存中外卖店的数量为:%d\n",cnt);free(L);//释放缓存空间}
5实验
实验仿真的环境为Windows 7操作系统[5]。其中,软
件运行环境为Microsoft Visual C++6.0,硬件主机的配置环境为Intel Core i7-47902.4Ghz,RAM 2GB。
输入N、M、T 的值以及订单信息,得出仿真结果如图1所示
图1仿真结果
(下转第102页)
检测系统无论是对当前水资源治理还是针对于今后的环境改善,都具有非常重要的意义。
参考文献
[1]杜治国,肖德琴,周运华,欧阳国桢.基于无线传顺丰快递查询单号查询
感器网络的水质监测系统设计.计算机工程与设计, 2008,(17):4568-4570.
[2]唐孟培.水中有机污染物含量检测分析系统.(Doc⁃toral dissertation),2009.[3]刘晓茹,刘玲花,高继军,等.基于GPRS技术的
水质监测系统集成研究[J].中国水利水电科学研究院学报,2007,5(1):75-79.
[4]王翥,郝晓强,魏德宝.基于wsn和gprs网络的远
程水质监测系统.仪表技术与传感器,2010,(1).
[5]王武林,刘辉,文立,邹雄伟,张辉,童设华.
水质有机物监测预警系统.
实际上,在6时刻时,1号店优先级降到3,2号店优先级升到6,继续被存储在优先缓存中。所以,有1家店(2号店)继续存储在优先缓存中。
6结语
阐述了外卖行业的兴起背景,并给出了一个具体的问题描述,然后使用C语言对该问题进行求解。在求解的过程中,给出了问题中所需模型的具体数据结构定义,给出了算法的设计思路,同时给出了完整的问题求解程序。在实验过程中,选取了2个外卖店,6条订单信息,6个时刻的例子进行分析,仿真得出了正确的程序运行结果。实际上,在未来的研究中,该问题可以进一步进行优化:(1)由于问题中并未说明外卖店及订单信息的最大值,因此若使用顺序结构进行存储,必须在程序中设置一个存储的最大容量,这在一定程度上会造成空间浪费,为了解决这一问题,可以采用链式结构来存储数据;(2)C语言是面向过程的程序设计语言,因此一些简单的函数无法封装,必须由程序员进行编写,如本问题求解程序中的NotIn函数,而在面向对象程序设计语言中,如Python、C++等,许多方法得到了封装,若采用面向对象语言求解该问题,许多功能可以直接调用系统的库函数来实现,这样可以使程序变得更加简洁清晰。
参考文献
稷怎么读优秀少先队辅导员事迹材料[1]温青荣,曾维聪,朱世森,陈剑标.基于动态规划
下外卖配送最优路线研究--以广州工商学院为例[J].中国储运,2020,(11):107-108. [2]王曙燕,王春梅.C语言程序设计教程[M].北京:
人民邮电出版社,2014:10-13.
[3]舒新峰,何孝敏,贾敬霞,付稳稳,王振宇.基于
线性路径匹配的C程序评分方法[J].西安邮电大学学报,2020,25(3):88-91.
[4]王曙燕,王春梅.数据结构与算法[M].北京:人
民邮电出版社,2013:16-22.
[5]贾敬霞,王振宇,何孝敏,付稳稳.基于C语言的
迪杰斯特拉算法仿真与实现[J].电脑编程技巧与维护,2020,(3):9-11.
平台的合理性和可能性,通过文中提到的调查问卷、可行性分析和省级多级数据上报管理要求,实现了基于大数据分析的综合管控大数据平台的设计与开发。该平台上线后日服务师生用户人数达到1.8万
人次,负责采集所有学校每日健康数据打卡、定位、轨迹的个人健康数据,利用平台完成每日大数据分析、预警、统计和上报工作,项目的实时性、可视性和预警性大大提高了被服务单位和用户的体验能力。
参考文献
[1]李军,王伟,宋维洋.基于云计算技术的中高职一
体化数据同控管理应用研究[J].通讯世界,2020, (06):151-153.
[2]王文涛,吴齐强,方圆.“平战结合”常态化秋冬
防控动态化[N].人民日报,2020.
[3]林洁.备战开学:精准做好校园常态化疫情防控[J].湖南安全与防灾,2020,(09):12-13.
(上接第62页) (上接第92页)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。