您的位置:首页 > 其它

资源分配

2017-07-06 01:32 190 查看
给定M个资源,分配给N个部门,每个部门获得不同数目的资源有不同的盈利值,求怎样分配使得盈利值最大。

#include<string.h>
#include<cstdio>
#include<cstdlib>
#include<vector>
#include<iostream>
#include<algorithm>
#define INF 1<<20
using namespace std;

int m,n;
long i,j,k,Max;
int f[11][16],value[11][16];

void show(long i,long j)
{
long k;
if(i==0)
return;
for(k=0;k<=j;k++)
if(Max==f[i-1][k]+value[i][j-k])
{
Max=f[i-1][k];
show(i-1,k);
printf("%ld %ld\n",i,j-k);
return;
}
}

int main()
{
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
scanf("%d",&value[i][j]);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
Max=0;
for(k=0;k<=j;k++)
if(f[i-1][k]+value[i][j-k]>Max)
Max=f[i-1][k]+value[i][j-k];
f[i][j]=Max;
}
printf("%d\n",f
[m]);
show(n,m);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: