说懂动态规划
Posted 一只计蒜鸡
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了说懂动态规划相关的知识,希望对你有一定的参考价值。
继续上一节的,将其动态规划的思想用代码的形式写出来。
// weight:物品重量 n:物品个数 w:背包可承载重量
int knapsack(int weight[], int n, int w){
bool states [n][w + 1];
states[0][0] = true;//第一个物品不放入背包
if(weight[0] <= w)
states[0][weight[0]] = true; //将第一个物品放入背包
for(int i = 1; i < n; i ++){
for(int j = 0; j <= w; j++){//不把第i个物品放入背包
if(states[i - 1][j] == true){
states[i][j] = states[i - 1][j];
}
for(int j = 0; j <= w - weight[i]; j ++){//把第i个物品放入背包
if(states[i -1][j] == true) states[i][j +weight[i]] = true;
}
}
for(int i = w; i >= 0; i --){ //输出j结果
if(states[n -1][i] == true) return i;
}
}
以上是关于说懂动态规划的主要内容,如果未能解决你的问题,请参考以下文章