从零开始学算法:基于Python
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.4 选择困难症——背包问题

喜欢电影的人可能看过《加勒比海盗》这部电影,在电影中每个海盗都想获得无尽的财宝。我们假设一种场景,一伙海盗在岛上发现了一个沙矿,这座沙矿可以生产三种沙子:沙子A、沙子B和沙子C。三种沙子有不同的质量和价值,沙子B质量最大,价值也最高,沙子C质量最小,价值也最低,沙子A的价值和质量在沙子B和沙子C之间。海盗的小船有承重限制,所有沙子的质量已经超过小船承重的极限,超过承重极限船就会浮不起来,所以不可能把所有沙子都装到船上。如果你是这伙海盗的首领,你想在不沉船的情况下,获得总价值最高的沙子,你会怎么装载呢?