From 818592cd7569c01606bd6e77f638f7ac5f4a1a42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=B5=B7?= <10402852@qq.com> Date: Wed, 13 Mar 2024 15:41:28 +0800 Subject: [PATCH] 'commit' --- TangDou/AcWing/BeiBao/1013_dfs.cpp | 42 ++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 TangDou/AcWing/BeiBao/1013_dfs.cpp diff --git a/TangDou/AcWing/BeiBao/1013_dfs.cpp b/TangDou/AcWing/BeiBao/1013_dfs.cpp new file mode 100644 index 0000000..5117719 --- /dev/null +++ b/TangDou/AcWing/BeiBao/1013_dfs.cpp @@ -0,0 +1,42 @@ +#include + +using namespace std; +const int N = 11; +const int M = 16; +int n; +int m; +int path[N], res[N]; +int w[N][M]; +int mx; + +// u:第几个公司 s:已经产生的价值 r:剩余的机器数量 +void dfs(int u, int s, int r) { + if (u == n + 1) { + if (s > mx) { + mx = s; + memcpy(res, path, sizeof path); + } + return; + } + + for (int i = 0; i <= r; i++) { + path[u] = i; + dfs(u + 1, s + w[u][i], r - i); // 给u号公司分配i个机器 + path[u] = 0; + } +} + +int main() { + cin >> n >> m; + + for (int i = 1; i <= n; i++) + for (int j = 1; j <= m; j++) + cin >> w[i][j]; + + dfs(1, 0, m); + + printf("%d\n", mx); + // 输出最优答案时的路径 + for (int i = 1; i <= n; i++) printf("%d %d\n", i, res[i]); + return 0; +} \ No newline at end of file