资源分配
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;
}
#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;
}
相关文章推荐
- [转][VC/MFC]VC资源分配、释放表
- 资源分配测试—失败及恢复
- 挑战Windows极限:物理内存资源分配
- hadoop-2.2.0多个队列资源分配
- 动态分配资源的自动释放 – auto_ptr的实现原理
- 15.hystrix生产环境中的线程池自动扩容与缩容的动态资源分配经验
- 深究跨dll的资源分配和释放问题
- spark动态资源分配
- 资源分配(分组背包)
- 1.5 基础知识——GP2.3 提供资源(Resources) 与 GP2.4 分配职责(Responisbility)
- SQLServer资源调控器--自由分配您的资源
- Spark动态资源分配-Dynamic Resource Allocation
- 进程创建&父子进程资源分配
- mesos资源动态分配测试
- 转:OSAL多任务资源分配机制
- 动态不等长存储资源分配算法
- [VC/MFC]VC资源分配、释放表
- Java基础中环境变量的配置以及Java的内存资源调用分配机制
- CloudSim源码分析之主机资源分配(处理器能力篇)
- 在Window环境下多线程与CPU资源分配原则