// weight 原始物品陣列,values 為其所對應的價值,n 表示物品的個數,w 表示揹包所能承受的最大重量
public void knapsack3(int weight, int values,int n, int w)
}states[0][0] = 0;
if(weight[0] < w)
for(int i = 1; i < n; i++)
}//裝該物品
for(int j = 0; j <= w - weight[i]; j++)}}
}int maxvalue = -1;
for(int j = w; j >= 0; j--)
}system.out.println(maxvalue);
}
//martix 為原始陣列,記錄每個座標內大小
public int mindistdp(int matrix,int n)
// 初始化第一列的資料,並記錄到 states 陣列中
sum = 0;
for(int i = 0; i < n; i++)
// 遍歷 martix 裡的資料,每次取上一步中較小的數存到 states 中
for(int i = 1; i < n; i++)
}return states[n - 1][n - 1];
}
動態規劃的兩個經典問題 01揹包
學動態規劃要從經典問題開始 by lrj 答應了小q要寫這個的.哎.先說那個什麼01揹包.為什麼叫揹包呢?因為這些問題的原型是說有很多東西,每個東西都有體積,也有價值,你要去春遊,要選一些東西放到揹包裡.問題是要怎麼選才能在總體積不超過揹包的體積的前提下,讓總價值最大.為什麼是0 1呢?因為每種東西...
動態規劃經典問題
from 實現在 維基百科對動態規劃的定義 動態規劃 英語 dynamic programming,簡稱dp 是一種在數學 電腦科學和經濟學中使用的,通過把原問題分解為相對簡單的子問題的方式求解複雜問題的方法。動態規劃常常適用於有重疊子問題 1 和最優子結構性質的問題,動態規劃方法所耗時間往往遠少於...
動態規劃經典問題
子串 在給定的字串中選取連續的一段 子串行 可以不連續,但是要保證出現的順序與原字串相同 比如字串abcdefg abc既是子串又是子串行 acd只是子串行 一 最大連續子串行和 給定乙個整數序列a1,a2 an。求最大的連續的子串行的和。比如的最大連續子串行的和為5 3 1 1 2 萬能列舉?每次...