分配问题-分支限界法

// branchBound_assignJob.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

#include 
#include 
#include 
using namespace std;

#define  N 4

//case 1 --> N=5
//int c[][N]={
//	3,  8,  4, 12,16,
//	9, 12, 13,  5,12,
//	8,  7,  9,  3,10,
//	12, 7,  6,  8,11,
//	23, 17, 26, 18, 13
//};

//case 2 --> N=4
int c[][N]={
	3,  8,  4, 12,
	9, 12, 13,  5,
	8,  7,  9,  3,
	12, 7,  6,  8
};


//case 3 --> N=3
//int c[][N]={
//	4, 3, 2,
//	2, 4, 6,
//	8, 7, 5
//};


int costBoundInK = 65535;//搜索深度为k时的花费下界,深度为k有N-k个节点的下界,取最小值给minCostInk
int minCostInk = 65535;//搜索深度为k时的最小下界
int minCostLine = 0;//记录最小下界节点所在的行
int expanded[N];//存放被扩展节点的顺序
vector vectors;//存放搜索深度为k时的花费下界,即costBoundInK

int min_exceptiInRow(int i,int row)
{
	int min = 65535;
	for (int line=0; line 由工人" << expanded[i] << "完成. "<< " 花费为:" << c[expanded[i]][i] << " " << endl;
	}

	cout << "总花费为:"<< mincost<< endl;
	return 0;
}

你可能感兴趣的:(算法)