解空间排列数和求解背包问题

本文探讨了如何解决活动安排问题,其中资源在任何时刻只能被一个活动占用,并且设计了算法寻找最优活动安排方案,使得安排的活动数量最多。此外,还介绍了如何求解数组中所有元素的全排列问题,以数组a[]={1,2,3}为例展示了可能的排列结果。" 90606793,5621586,学术论文检索:从IEEE到SCI-HUB,"['学术资源', '论文检索', '学术平台', '在线数据库']
摘要由CSDN通过智能技术生成

求解活动安排问题

假设有一个需要使用某一资源的由n个活动组成的集合S,S=(1,2,…,n),该资源在任何时刻只能被一个活动所占用,活动i有一个开始时间bi和结束时间ei(bi<ei),执行时间为ei-bi,假设最早活动执行时间为0.一旦某个活动开始执行,就不能被打断,直到执行完毕。若活动i和活动j有bi>=ej或bi>=ei,则称这两个活动兼容。设计算法求一种最优活动安排方案,使得所有安排的活动个数最多。

#include <stdio.h>
#include <string.h>
#define MAX 51
//问题表示
struct Action
{
   
	int b;					//活动起始时间
	int e;					//活动结束时间
};
int n = 4;
Action A[] = {
    {
   0,0},{
   1,3},{
   2,5},{
   4,8},{
   6,10} };	//下标0不用
//求解结果表示
int x[MAX];					//解向量
int bestx[MAX];				//最优解向量
int laste = 0;				//一个方案中最后兼容活动的结束时间
int sum = 0;					//一个方案中所有兼容活动个数
int maxsum = 0;				//最优方案中所有兼容活动个数
void swap(int& x, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

骇梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值