1266:【例9.10】机器分配

机器分配

 1 #include<iostream>
 2 #include<cstdio>
 3 using namespace std;
 4 const int N=25;
 5 
 6 int a[N][N],b[N][N],f[N][N];
 7 void show(int r,int c){
 8     if(!r)return;
 9     show(r-1,c-f[r][c]);
10     printf("%d %d\n",r,f[r][c]);
11 }
12 int main(){
13     int n,m;
14     cin>>n>>m;
15     for(int i=1;i<=n;i++)
16         for(int j=1;j<=m;j++)
17             scanf("%d",&a[i][j]);
18     //dp算法
19     for(int i=1;i<=n;i++)
20         for(int j=1;j<=m;j++)
21             for(int k=j;k>=0;k--)//表示第i个公司分k台
22                 if(a[i][k]+b[i-1][j-k]>b[i][j]){
23                     b[i][j]=a[i][k]+b[i-1][j-k];
24                     f[i][j]=k;
25                 }
26     cout<<b[n][m]<<endl;
27     show(n,m);
28     return 0;
29 }

 

posted @ 2021-08-15 11:43  Rekord  阅读(437)  评论(0编辑  收藏  举报