機器分配
阿新 • • 發佈:2018-12-01
題目描述
某總公司擁有高效生產裝置M臺,準備分給下屬的N個分公司。各分公司若獲得這些裝置,可以為總公司提供一定的盈利。問:如何分配這M臺裝置才能使國家得到的盈利最大?求出最大盈利值。
分配原則:每個公司有權獲得任意數目的裝置,但總檯數不得超過總裝置數M。其中M<=100,N<=100。
輸入
第一行為兩個整數M,N。接下來是一個N×M的矩陣,其中矩陣的第i行的第j列的數Aij表明第i個公司分配j臺機器的盈利。所有資料之間用一個空格分隔。
輸出
只有一個數據,為總公司分配這M臺裝置所獲得的最大盈利。
輸入樣例
3 2
1 2 3
2 3 4
輸出樣例
4
.
.
.
.
.
分析
f[i][j]表示前i個公司分配j個機器的最大盈利
f[i][j]=max(f[i][j],f[i-1][k]+a[i][j-k]);
.
.
.
.
.
程式:
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int main() { int n,m,f[200][200],a[200][200]; scanf("%d%d",&m,&n); for (int i=1;i<=n;i++) for (int j=1;j<=m;j++) scanf("%d",&a[i][j]); memset(f,sizeof(f),0); for (int i=1;i<=n;i++) for (int j=1;j<=m;j++) for (int k=0;k<=j;k++) f[i][j]=max(f[i-1][k]+a[i][j-k],f[i][j]); printf("%d",f[n][m]); return 0; }