【机器分配问题】

embedded/2024/10/19 9:35:47/

问题:

现有设备n台,可投放到m个项目中,每个项目的产量与投入该项目的设备数量有关。如表2所示为三个项目的产量(吨)和投入设备(台)的关系。求对m个项目的最优设备分配,使总产量效益最大。

表2 项目产出与投入的设备数量之间的关系

项目产出

投入设备数量     

项目1(吨)

项目2(吨)

项目3(吨)

1台

10 

25

11

2台

36

29

30

3台

40

43

45

4台

59

55

58

输入描述:

    输入第一行包含两个整数n,m,用空格隔开,分别表示设备的数量和项目的数量。其后有n行,每行有m个整数,分别表示1,…,n台设备分别投入到m个项目之后的产量产出。每个整数之间用空格隔开。

输出描述:

输出一个整数,表示将n台设备全部投入到m个项目中所能得到的最大产量。

样例输入:

       4 3

       10 25 11

       36 29 30

       40 43 45

       59 55 58

        输出:

        72

思路:

回溯法

代码:

#include<bits/stdc++.h>
using namespace std;int n, m;int dfs(int** relation, int* has, int cnt, int total)
{int result = 0;if(cnt > n) return total;for(int i = 1; i <= m; i++){has[i] = has[i] + 1;int new_total = total+relation[has[i]][i]-relation[has[i]-1][i];int this_time = dfs(relation, has, cnt+1, new_total);has[i] = has[i] - 1;if(this_time > result) result = this_time;}return result;
}
void Delete(int** relation, int* has)
{for(int i = 0; i <= n+1; i++){delete [] relation[i];}delete [] relation;delete [] has;
}
int main()
{cin >> n >> m;int **relation = new int*[n+2];int *has = new int[n+2]();for(int i = 0; i <= n+1; i++){relation[i] = new int[m+2]();}for(int i = 1; i <= n; i++){for(int j = 1; j <= m; j++){cin >> relation[i][j];}}int result = 0;result = dfs(relation, has, 1, 0);cout << result << endl;Delete(relation, has);return 0;
}


http://www.ppmy.cn/embedded/43661.html

相关文章

排序(冒泡、选择、插入、希尔、归并、快速)

冒泡排序 基本原理 冒泡排序&#xff08;英语&#xff1a;Bubble Sort&#xff09;是一种简单的排序算法。它重复地走访过要排序的数列&#xff0c;一次比较两个元素&#xff0c;如果他们的顺序&#xff08;如从大到小、首字母从A到Z&#xff09;错误就把他们交换过来。 voi…

人脸检测--FaceNet(四)

FaceNet 是一个由 Google 研究团队开发的人脸识别系统&#xff0c;它基于深度学习技术&#xff0c;可以实现高精度的人脸识别、验证和聚类任务。FaceNet 通过学习直接从图像像素到人脸嵌入的映射&#xff0c;使得它在各种人脸识别任务中表现出色。下面是对 FaceNet 的详细介绍&…

关于Broken pipe异常的一点学习记录

什么是Broken pipe? pipe&#xff0c;管道&#xff0c;管道里面自然就是数据&#xff0c;通过指从文件或网络套接字读取的数据。当一个进程试图向一个已关闭的管道&#xff08;pipe&#xff09;写数据或者从一个已关闭的通道读数据时就会出现中断&#xff0c;也就是Broken pi…

git教程(IDEA + 命令行)

首先假设你已经安装 git 且 已经初始化完成&#xff1a; // 初始化git config --global user.name "你的用户名" git config --global user.email "你的邮箱"在当前文件夹下创建一个仓库&#xff0c;且该文件夹下会有多个项目 首先在当前文件夹下新建git…

Cache 缓存实现类简单使用

Cache 缓存实现类 拿来当Redis用就行了&#xff0c;不过Hutool 缓存库主要是为了实现本地缓存&#xff1b;用在数据量不大&#xff0c;短期频繁访问的数据。 FIFO&#xff08;先进先出&#xff09;缓存&#xff1a;按照数据进入缓存的顺序&#xff0c;最先进入缓存的数据会被…

ubuntu设置中文输入法教程

在 Ubuntu 上设置中文输入法可以通过以下步骤来完成。我们将以安装和配置 fcitx 输入法框架及其中文输入法插件 fcitx-sunpinyin 为例。 ### 步骤一&#xff1a;安装 fcitx 和中文输入法插件 1. **更新软件包列表** 打开终端并运行以下命令来更新软件包列表&#xff1a; …

LangChain之链的应用(下)

LangChain之链的应用 Chain链的应用配置LLMChain&#xff1a;简单链create_stuff_documents_chain&#xff1a;文档链create_extraction_chain&#xff1a;提取信息链LLMMathChain&#xff1a;数学链create_sql_query_chain&#xff1a;SQL查询链连接数据库创建并使用链 Sequen…

oracle 还原被覆盖的视图

1.现在的视图 select to_lob(text) from SYS.DBA_views where view_nameXXX; 2.查旧数据 --as of timestamp to_date(2024-05-28 10:30:00,yyyy-mm-dd hh24:mi:ss) select to_lob(text) from SYS.DBA_views as of timestamp to_date(2024-05-28 10:30:00,yyyy-mm-dd hh24:mi:s…