在論壇上看見的乙個題,花時間想了下,給出乙個大致的思路,記錄在這裡,以便以後檢視
題目:給出一堆硬幣,將其分為兩堆,使得這兩堆的差值盡量小
1.要使得差值盡量小,等同於尋找出乙個集合,它的和盡量靠近硬幣和sum/2
2.揹包即可
行--每一枚硬幣的選取
列--所選硬幣的和的最優值
偽**如下
sum_of_all_cions
half = sum_ofall_cions / 2;
memset(sum, false, sizeof(sum));
for i: 1 to coins
for j: half to 0
if sum[j] != 0
sum[j + coins_num] = true;
find the one which is true and nearest to half
揹包問題,硬幣問題
至少有4種揹包問題 1 01揹包 2 部分揹包 3 完全揹包 4 多重揹包。只有部分揹包是個貪心問題,其他的都是以01揹包為基礎的動歸問題。部分揹包問題 把物品按價值密度從大到小排序 w i v i 然後從第一種物品開始,盡可能多拿當前物品,如果當前物品的量小於揹包剩餘容量,拿完,指標推到下一種物品...
多重揹包問題 硬幣
給定n種硬幣,其中第 i 種硬幣的面值為ai,共有ci個。從中選出若干個硬幣,把面值相加,若結果為s,則稱 面值s能被拼成 求1 m之間能被拼成的面值有多少個。輸入格式 輸入包含多組測試用例。每組測試用例第一行包含兩個整數n和m。第二行包含2n個整數,分別表示a1,a2,an和c1,c2,cn。當輸...
硬幣思考多重揹包
給定n種硬幣,其中第 i 種硬幣的面值為ai,共有ci個。從中選出若干個硬幣,把面值相加,若結果為s,則稱 面值s能被拼成 求1 m之間能被拼成的面值有多少個。輸入包含多組測試用例。每組測試用例第一行包含兩個整數n和m。第二行包含2n個整數,分別表示a1,a2,an和c1,c2,cn。當輸入用例n ...