cpp-interview/Problems/KnapsackProblem/README.md
2018-02-11 01:08:43 +08:00

35 lines
911 B
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 背包问题
### 代码
[背包问题代码](pack.cpp)
### 问题说明
有N件物品和一个容量为V的背包。
第i件物品的重量是w[i]价值是v[i]。
求解将哪些物品装入背包可使这些物品的重量总和不超过背包容量,
且价值总和最大。
### 功能说明
本程序用动态规划的思想解决了背包问题,并用了两种算法:
迭代法、递归法。在迭代法中实现了打印背包问题的表格。
### 代码简述
通过用户输入数据,程序输入检测,动态分配空间,选择算法,
用动态规划的思想求解背包问题。
#### 迭代法:
通过遍历n行W列迭代每行每列的值并把最优解放到
n行在数组中为第n+1行W列在数组中为第W+1列中。
#### 递归法:
通过每次返回前i个物品和承重为j的最优解
递归计算总背包问题的最优解。