中原工学院计算机学院。
实验报告。实验二最少活动会场安排问题。
一、实验目的。
1.掌握贪心算法的基本概念和两个基本要素。
2.熟练掌握贪心算法解决问题的基本步骤。
3.学会利用贪心算法解决实际问题。
二、实验内容
问题描述:题目一:假设要在足够多的会场里安排一批活动,并希望使用尽可能少的会场。设计一个有效的贪心算法来进行安排,试编程实现。
题目二:一辆汽车加满油后,可行使n千米。旅途中有若干个加油站。若要使沿途加油次数最少,设计一个有效算法,指出应在哪些加油站停靠加油。
数据输入:个人设定,由键盘输入。
要求: 上述题目任选一做。上机前,完成程序**的编写。
独立完成实验及实验报告。
三、实验步骤。
、数据结构与核心算法的设计描述。
提示:题目一:参考教材活动安排问题;有关队列操作参考数据结构。
void greedyselector(int n, int *s, int *f, int *a)
else a[i] =false;
、函数调用及主函数设计。
可用函数的调用关系图说明)
程序调试及运行结果分析。
实验总结。
在做本实验之前,自己看了课本上所列举的贪心法解活动安排问题的**,**很简单,很容易理解,于是就按课本的**实现。通过几个测试用例测试发现结果不对,后来发现自己忘了进行贪心法的一个前提条件,事先没有按各个活动结束时间对所有活动进行非递减排序,所以才会导致结果错误。经过修正后,自己真正理解了贪心法解活动安排问题的原理。
四、主要算法流程图及程序清单。
1、主要算法流程图:
2、程序清单
(程序过长,可附主要部分)
#include ""
#include<>
#include<>
#include
#define n 50
#define ture 1
#define false 0
int s[n];/开始时间*/
int f[n];/结束时间*/
int a[n];/用a存储所有的*/
void greedyselector(int n, int *s, int *f, int *a);
int partition(int *b, int *a, int p, int r)
int k, m, y, i = p, j = r + 1;
int x = a[p]; y = b[p];
while (1)
a[p] =a[j];
b[p] =b[j];
a[j] =x;
b[j] =y;
return j;
void quicksort(int *b, int *a, int p, int r)
int q; if (p
//产生中间数
int main()
int n = 0, i;
while (n <=0 ||n>50)
printf("请分别输入开始时间s[i]和结束时间f[i]:");
for (i = 1; i <=n; i++)
quicksort(s, f, 1, n); 按结束时间非减序排列
printf("按结束时间非减序排列如下:");输出排序结果*/
printf(" 序号\t开始时间结束时间");
printfn");for (i = 1; i <=n; i++)
printf(" d\t %d\t %d", i, s[i], f[i]);
printfn");
greedyselector(n, s, f, a);/贪心算法实现活动安排
printf("安排的活动序号依次为:")
for (i = 1; i <=n; i++)
printf("");
system("pause");
return 0;
//快速排序
/产生中间数
/贪心算法实现活动安排
void greedyselector(int n, int *s, int *f, int *a)
else a[i] =false;
贪心算法的初步认识
在众多的计算机解题策略中,贪心策略可以算得上是最接近人们日常思维的一种解题策略,正基于此,贪心策略在各级各类信息学竞赛 尤其在对npc类问题的求解中发挥着越来越重要的作用。7.1 贪心策略的定义 贪心策略是 指从问题的初始状态出发,通过若干次的贪心选择而得出最优值 或较优解 的一种解题方法。其实,从...
二年级珠心算说课稿
二年级珠心算 两位数三行加减法 说课稿。王盼盼。现在学生已经是二年级下学期了,学习了一年多的珠算,学生们基本上已经学会了珠算加减法的计算过程和拨珠方法。珠心算的学习主要就是让学生学会加减法的八个口诀,通过口诀来拨珠计算,在反复的练习和训练来巩固和记忆,使学生可以在掌握方法的基础上快速的计算出各种加减...
二年级珠心算教案
嫩江县第三小学。二年级珠心算教学计划。充分发挥算盘这一中华民族古老算具的作用,促进儿童左右脑的和谐发展,发展智力,培养特长,促进学生在其他学科学习中的迁移。一。教学目标。1.进一步激发学生学习珠心算的兴趣。2.培养学生动手动脑的能力。3.进一步巩固乘法的运算能力。4.学会一位乘多位的方法。二 教学安...