资源分配

题目描述

总公司拥有高效设备M台,准备分给下属的N个分公司。各分公司若获得这些设备,可以为国家提供一定的盈利。问:如何分配这M台设备才能使国家得到的盈利最大?求出最大盈利值。其中M≤15,N≤10。分配原则:每个公司有权获得任意数目的设备,但总台数不超过设备数M。

直接上程序:

program resources;
uses math;
var n,m:longint;
f:array[0..1000,0..1000]of longint;
v:array[0..1000,0..1000]of longint;
i,j:longint;
function max1(i,j:longint):longint;
var k:longint;
begin
if f[i,j]<>0 then exit(f[i,j]);
if i=1 then exit(v[1,j])
else begin
for k:=0 to j do
f[i,j]:=max(f[i,j],max1(i-1,k)+v[i,j-k]);
exit(f[i,j]);
end;
end;

begin
read(n,m);
fillchar(v,sizeof(v),0);
for i:=1 to n do
for j:=1 to m do
read(v[i,j]);
fillchar(f,sizeof(f),0);
write(max1(n,m));
end.

posted @ 2015-11-25 22:14  Herrwerner  阅读(152)  评论(0编辑  收藏  举报