`
pleasetojava
  • 浏览: 703305 次
  • 性别: Icon_minigender_2
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

活动选择问题(活动安排问题)(最大数目活动选择问题)贪心算法C++实现

 
阅读更多

// 活动选择问题(活动安排问题)(最大数目活动选择问题).cpp : Defines the entry point for the console application.
//贪心算法

#include "stdafx.h"
#include<iostream>
#define N 100
using namespace std;

struct Activity
{
int number; //活动编号
int begin; //活动开始时间
int end; //活动结束时间
bool flag; //此活动是否被选择
};
//对于活动集,按照结束时间递增排序,使用快速排序
void fast_sort(Activity *act,int f,int t)
{
if(f<t)
{
int i = f-1,j = f;
Activity a = act[t];
while(j<t)
{
if(act[j].end<=a.end)
{
i++;
Activity temp1 = act[i];
act[i] = act[j];
act[j] = temp1;
}
j++;
}
Activity temp2 = act[t];
act[t] = act[i+1];
act[i+1] = temp2;
fast_sort(act,f,i);
fast_sort(act,i+2,t);
}
}
//选择最大活动数目
void select_activity(Activity *act,int n)
{
int i = 0;
act[0].flag = true;
Activity a = act[0];
for(i=1;i<n;i++)
{
if(act[i].begin>=a.end)
{
act[i].flag = true;
a = act[i];
}
}
}

int _tmain(int argc, _TCHAR* argv[])
{
int cases;
Activity act[N];
cout<<"请输入案例的个数:"<<endl;
cin>>cases;
while(cases--)
{
int n;
cout<<"请输入活动的数目:"<<endl;
cin>>n;
int i;
for(i=0;i<n;i++)
{
act[i].number = i+1;
act[i].flag = false;
cout<<"活动"<<i+1<<"开始时间:";
cin>>act[i].begin;
cout<<"活动"<<i+1<<"结束时间:";
cin>>act[i].end;
}

//快速排序
fast_sort(act,0,n-1);

//选择最大数目活动集
select_activity(act,n);
int sum = 0;
cout<<"最终选择的活动集合为:"<<endl;
cout<<"< ";
for(i=0;i<n;i++)
if(act[i].flag)
{
cout<<act[i].number<<" ";
sum ++;
}
cout<<">"<<endl;
cout<<"最大活动集合的数目为:"<<sum<<endl;
}
system("pause");
return 0;
}

----------------------------------------------程序测试----------------------------------------------------

请输入案例的个数:
1
请输入活动的数目:
11
活动1开始时间:1
活动1结束时间:4
活动2开始时间:3
活动2结束时间:5
活动3开始时间:0
活动3结束时间:6
活动4开始时间:5
活动4结束时间:7
活动5开始时间:3
活动5结束时间:8
活动6开始时间:5
活动6结束时间:9
活动7开始时间:6
活动7结束时间:10
活动8开始时间:8
活动8结束时间:11
活动9开始时间:8
活动9结束时间:12
活动10开始时间:2
活动10结束时间:13
活动11开始时间:12
活动11结束时间:14
最终选择的活动集合为:
<1 4 8 11 >
最大活动集合的数目为:4
请按任意键继续. . .

分享到:
评论

相关推荐

    贪心算法实现活动安排问题

    贪心算大实现活动安排问题,算法实现使用图形界面动态显示,程序中用到的排序算法为快速排序

    贪心算法活动安排问题,

    活动安排问题是利用贪心算法有效求解的很好例子。该问题要求高校的安排一系列争用某一公共资源的活动。贪心算法提供了一个简单、漂亮的方法,使尽可能多的活动可以兼容的使用某一公共资源

    活动选择问题的贪心算法

    活动选择问题的C#实现 S:1,3,0,5,3,5,6,8,8,2,12 f:4,5,6,7,9,9,10,11,12,14,16 以上是测试数据

    活动安排问题 贪心算法

    设计一个有效的算法进行安排。(这个问题实际上是著名的图着色问题。若将每一个活动作为图的一个顶点,不相容活动间用边相连。使相邻顶点着有不同颜色的最小着色数,相应于要找的最小会场数。) 编程任务: 对于给定...

    TSP贪心算法C++

    TSP贪心算法C++ TSP贪心算法C++

    活动安排问题的动态规划、贪心算法和树搜索算法求解(更新)

    活动安排问题的动态规划、贪心算法和树搜索算法求解。 比如有一个多媒体教室,现在有四个待举办活动A、B、C、D。A是在8:00到10:00举行,简单记为[8, 10];B是[12, 14];C是[15, 17];D是[11, 19]。为了让尽可能多的...

    贪心算法-活动安排问题C程序

    主要是使用贪心算法,实现活动安排的个数最多

    最优装载问题(贪心算法)c++

    问题描述 有一批集装箱要装上一艘载重量为c的轮船,其中集装箱i的重量为wi (1≤i≤n) 。 最优装载问题要求确定在装载体积不受限制的情况下,将尽可能多的集装箱装上轮船。

    活动安排问题之贪心算法

    活动安排问题就是要在所给的活动集合中选出最大的向荣活动子集合

    c语言实现贪心算法背包问题

    贪心算法背包问题c语言实现贪心算法背包问题c语言实现贪心算法背包问题c语言实现贪心算法背包问题c语言实现贪心算法背包问题c语言实现贪心算法背包问题c语言实现贪心算法背包问题c语言实现贪心算法背包问题c语言实现...

    0-1背包问题贪心算法(C++实现)

    这是一个应用贪心算法解决背包问题的完整的程序,供大家参考!

    活动选择问题代码(c++)

    使用贪心算法和动态规划求解活动选择问题,使用c++描述。因为只能上传一个文件,所以把代码文件压缩了。里面共三个文件,两个是动态规划解法,一个是使用贪心算法求解。因为我这里使用的是VS2010,担心IDE不同可能...

    活动安排问题(贪心算法)报告.doc

    算法设计与分析实验报告,附已通过源码,供学习参考,共勉♪ 目录摘要如下: 1.问题描述 2.实验目的 3.实验原理 4.实验设计 (包括输入格式、算法、输出格式) 5.实验结果与分析 (除了截图外,实验结果还用...

    会议安排问题(贪心算法)

    会议安排问题(贪心算法) VC下调试OK

    贪心算法的C++实现

    其中包含了多级调度问题和汽车加油问题,用C++实现。是学习算法分析与设计的基础算法。

    贪心算法实现背包问题c++

    用C++贪心算法实现背包问题(非0-1背包)

    流水作业调度C++(贪心算法)

    流水作业调度C++(贪心算法)流水作业调度C++(贪心算法)流水作业调度C++(贪心算法)

    大学贪心算法课件活动安排等问题

    讲解贪心算法的PPT,活动安排问题游艇问题等

    贪心算法C++实现

    键盘输入一个高精度的正整数N,去掉其中任意S个数字后剩下的数字按照左右次序组成一个新的正...对给定的N和S,用贪心策略寻找一种删数规则使得剩下的数字组成的新数最小。例如:N=412365,S=2,则1235是最小的新数。

Global site tag (gtag.js) - Google Analytics