自动排班系统2.0(基于网络流实现的排班系统,附详细注解)

第一版链接:http://blog.csdn.net/david_jett/article/details/44928667

更新说明:

    将输入优化了下,不必再输入干部数和总班数,比较排序部分采用了冒泡排序。


代码:

#include <iostream>
#include <cstdio>
#include <queue>
#include <string.h> 
#include <vector>
#include <string>
#include <algorithm>
#include <sstream> 
using namespace std;
#define arraySize 200  //中心干部不超过100,每周班数最多50
#define inf 1000000000//无穷大
int capacity[arraySize][arraySize], flow[arraySize][arraySize], max_flow[arraySize], pre[arraySize];
//capacity存储点之间最大流量,flow存储点之间当前已经流过的流量 
//max_flow存储每次遍历过程中的值,pre记录查找过程中每个节点的前一节点,用于后续更新
int reflect[100];
//用于标记干部值哪班,初始值为0,代表还未分配值班时间
int period_info[60][10];
//每班由哪些人来值
int member_amount, period_amount, tmp, start_node, end_node;
//干部数量,班的数量,临时变量,超级源点,超级汇点


//干部对象,No-干部对应序号,name-姓名,period_amount可值班数,store_period存储可以值的班对应的序号,干部不超过100人
class  member
{
	public:
	int No;
	string name;
	int period_amount;
	vector <int> store_period;
	//为冒泡那里修改的拷贝函数 
	member()
	{
		
	}
	member (const  member & x)
	{
		No=x.No;
		name=x.name;
		period_amount=x.period_amount;
		store_period=x.store_period;
	}
}store_member[100];
//贪心阶段干部的排序,按照空余时间段少的先安排的策略排序
bool cmp(member a, member b)
{
	return a.period_amount < b.period_amount;
}

//初始化
void Initialize()
{
	//初始化干部值班对应关系
	memse
  • 6
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值