资源分配问题
【问题描述】资源分配问题是将数量一定的一种或若干种资源(原材料、资金、设备或劳动力等),合理地分配给若干使用者,使总收益最大。
例如,某公司有3个商店A、B、C,拟将新招聘的5名员工分配给这3个商店,各商店得到新员工后,每年的赢利情况如下表所示,求分配给各商店各多少员工才能使公司的赢利最大?
#include
using namespace std;
#define MAX 30
int a[MAX][MAX] = { {0,3,7,9,12,13}, {0,5,10,11,11,11},{0,4,6,11,12,12} }, b[MAX] = { 0 }, c[MAX];
int n = 3, num = 0, V = 0, maxv = -1;
void bfs(int s)
{
if (s > n)
{
if (V > maxv)
{
for (int i = 1; i < s; i++)
c[i] = b[i];
maxv = V;
}
return;
}
for (int i = 0; i <= 5; i++)
{
if ((num + i) > 5) continue;
b[s] = i;
num += i;
V += a[s][i];
bfs(s + 1);
num -= i;
V -= a[s][i];
b[s] = 0;
}
}
int main()
{
bfs(1);
for (int i = 1; i < 4; i++)
cout << c[i] << " ";
cout << maxv << endl;
return 0;
}