- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
贪心算法解决会场安排问题、多处最优服务次序问题(含源代码).docx
西安邮电大学
(计算机学院)
课内实验报告
实验名称
计算机科堂与技术专业名称:
计算机科堂与技术
班 级:
学生姓名:
学号(8位)
指导教师:
实验日期: 2014年5月22日
实验目的及实验环境
实验目的:通过实际应用熟悉贪心算法,并解决会场安排问题、多出最优服 务次序问题
实验环境:Visual C++ 6.0
实验内容
1 ?会场安排问题.
假设耍在足够多的回厂里安排一批活动,并希望使用尽可能少的会场,设计 一个有效的贪心算大进行安排(这个问题实际上是注明的图着色问题。若将每一 个活动作为图的一个顶点,不相容活动间用边相连。使相邻顶点着有不同颜色的 最小着色数,相应于要找的最小会场数)
2.多处最优服务次序问题
设有口个顾客同时等待一项服务。顾客i需要的服务时间为ti, l=i=no 共有s处可以提供此项服务。应如何安排n个顾客的服务次序才能使平均等待时 间达到最小?平均等待吋间是n个顾客等待服务吋间的总和除以n。
方案设计
1、设冇n个活动的集合E={1, 2,…,n},其屮每个活动都要求使用同一资源, 如演讲会场等,而在同一时间内只有一个活动能使用这一资源。每个活动i都有 一个要求使用该资源的起始吋间si和一个结束吋间fi,且si〈fi。如果选择了 活动i,则它在半开时间区间[si, fi)内占用资源。若区间[si, fi)与区间[sj, fj)不相交,则称活动i与活动j是相容的。也就是说,当si2fj或sjMfi时, 活动i与活动j相容。
由于输入的活动以其完成时间的非减序排列,所以算法greedySelector每 次总是选择具冇最早完成时间的相容活动加入集合A屮。直观上,按这种方法选 择相容活动为未安排活动留下尽可能多的时间。也就是说,该算法的贪心选择的 意义是使剩余的可安排吋间段极大化,以便安排尽可能多的相容活动。
算法greedySelector的效率极高。当输入的活动已按结束时间的非减序排 列,算法只需0(的吋间安排n个活动,使最多的活动能相容地使用公共资源。 如果所给出的活动耒按非减序排列,可以用O(nlogn)的时间重排。
1?会场安排问题源代码
#include iostream
#include vector
^include algorithm using namespace std;
struct point
{
int t; bool f;
}; bool cmp(point x,point v)
{
return x. tv. t;
}
int greedy(vectorpoint x)
{
int max=0, cur=0, n=x. size (); sort (x. beg in (), x. end (), cmp); for(int i=0;in;i++)
{
if (x[i]? f)
cur++;
el se
cui—;
if (curmax)
max=cur;
}
return max;
int main()
{
vectorpoint x;
int n, i;
point temp; while(cinn, n)
{
for(i=0;in;i++)
{
temp, f二true; cintemp. t;
x.push_back(temp); temp, f二false;
cintemp. t;
x. push back(temp); coutgreedy (x)endl; x. clear ();
}
return 0;
2.多处最优服务次序问题源代码:
#includcstdio.h
#includestdlib.h
main()
{
int **window, ^timewindow, ^array, num, serve, i, j, k, temp; double min;
printf (,z请输入等待服务人数\n〃);
seanf(%d〃, num);
printf (z,请输入服务窗口数\n〃);
scanf(〃%d〃,serve);
array = (int ^)malloc((num + 1) * sizeof (int)); timewindow = (int ^)malloc((serve + 1) * sizeof(int)); window 二(int **)malloc((serve + 1) * sizeof(int *)); for(i 二 0; i 二 serve;i++)
window[i]二(int *)mal loc((num + 1) * sizeof (int *)); printfC请依次输入服务等待时间\n〃);
for(i = 1; i = num;i++)
scanf(%d〃,array[i]);
for(
您可能关注的文档
- 财经教学部1415学年第一学期工作总结.doc
- 财经系统党建工作述职报告XM.docx
- 财险企业文化建设对适应财产财险市场竞争的意义毕业.doc
- 责令整改通知书的期限食品安全法.doc
- 责任伴我成长高中班团健康活动课与责任是远航的风帆比赛演讲稿合集.docx
- 责任共产党员不变的追求与责任励志演讲稿合集.docx
- 责任犯罪毕业外文翻译.docx
- 责任监察调查问卷和安全知识试卷.doc
- 责任,在我们心中永驻(粮食企业)与货物供销合同合集.docx
- 责观公益广告《我是谁》有感不忘初心,尽职尽责与货物出口委托合同合集.docx
- GB/T 39560.10-2024电子电气产品中某些物质的测定 第10部分:气相色谱-质谱法(GC-MS)测定聚合物和电子件中的多环芳烃(PAHs).pdf
- 中国国家标准 GB/T 39560.10-2024电子电气产品中某些物质的测定 第10部分:气相色谱-质谱法(GC-MS)测定聚合物和电子件中的多环芳烃(PAHs).pdf
- 《GB/T 39560.10-2024电子电气产品中某些物质的测定 第10部分:气相色谱-质谱法(GC-MS)测定聚合物和电子件中的多环芳烃(PAHs)》.pdf
- GB/T 39560.302-2024电子电气产品中某些物质的测定 第3-2部分:燃烧-离子色谱法(C-IC)筛选聚合物和电子件中的氟、氯和溴.pdf
- 中国国家标准 GB/T 39560.2-2024电子电气产品中某些物质的测定 第2部分:拆解、拆分和机械制样.pdf
- 中国国家标准 GB/T 39560.302-2024电子电气产品中某些物质的测定 第3-2部分:燃烧-离子色谱法(C-IC)筛选聚合物和电子件中的氟、氯和溴.pdf
- GB/T 39560.2-2024电子电气产品中某些物质的测定 第2部分:拆解、拆分和机械制样.pdf
- 《GB/T 39560.2-2024电子电气产品中某些物质的测定 第2部分:拆解、拆分和机械制样》.pdf
- 《GB/T 39560.303-2024电子电气产品中某些物质的测定 第3-3部分:配有热裂解/热脱附的气相色谱-质谱法(Py/TD-GC-MS)筛选聚合物中的多溴联苯、多溴二苯醚和邻苯二甲酸酯》.pdf
- 中国国家标准 GB/T 39560.303-2024电子电气产品中某些物质的测定 第3-3部分:配有热裂解/热脱附的气相色谱-质谱法(Py/TD-GC-MS)筛选聚合物中的多溴联苯、多溴二苯醚和邻苯二甲酸酯.pdf
文档评论(0)