• [题解]机器分配


    原题链

    解题思路:

    DP, f([i][j])表示前(i)个公司分配(j)台机器所取得的最大利润。当前的最大利润为:前(i - 1)个公司分配(k)台机器所取得的最大利润加上当前第(i)个公司分配(j - k)台机器所取得的利润的总和,与之前取得的最大利润的较大值。所以可以得出:
    maxx = max(ans[i - 1][k] + value[i][j - k],maxx);
    a[i][j] = maxx;
    

    ---------------------------分析完毕--------------------------

    源代码

    #include <bits/stdc++.h>
    using namespace std;
    int a[50][50],ans[50][50],p[50],maxx;
    inline int print(int i,int j){
    	if(i == 0)return 0;
    	for(int k = 0;k <= j;k++){
    		if(maxx == ans[i - 1][k] + a[i][j - k]){
    			maxx = ans[i - 1][k];
    			print(i - 1,k);
    			printf("%d %d
    ",i,j - k);
    			break;
    		}
    	}
    }
    int main(){
    	int n,m;
    	scanf("%d%d",&n,&m);
    	for(int i = 1;i <= n;i++){
    		for(int j = 1;j <= m;j++){
    			scanf("%d",&a[i][j]);
    		}
    	}
    	for(int i = 1;i <= n;i++){
    		for(int j = 1;j <= m;j++){
    			maxx = 0;
    			for(int k = 0;k <= j;k++){
    				maxx = max(ans[i - 1][k] + a[i][j - k],maxx);
    				ans[i][j] = maxx;
    			}
    		}
    	}
    	printf("%d
    ",ans[n][m]);
    	print(n,m);
    	return 0;
    } 
    
  • 相关阅读:
    python基础 条件和循环
    git基本使用(搭建Git服务器)
    面试题整理
    node nvm npm nrm 安装
    onmouse事件
    webpack
    web前端UI框架
    javascript cookie
    三大家族,offset,scroll,client
    clientTop,scrollTop,兼容
  • 原文地址:https://www.cnblogs.com/czy--blog/p/11741841.html
Copyright © 2020-2023  润新知