在leetcode商店中, 有許多在售的物品。
然而,也有一些大禮包,每個大禮包以優惠的****銷售一組物品。
現給定每個物品的**,每個大禮包包含物品的清單,以及待購物品清單。請輸出確切完成待購清單的最低花費。
每個大禮包的由乙個陣列中的一組資料描述,最後乙個數字代表大禮包的**,其他數字分別表示內含的其他種類物品的數量。
任意大禮包可無限次購買。
示例 1:
輸入: [2,5], [[3,0,5],[1,2,10]], [3,2]
輸出: 14
解釋:有a和b兩種物品,**分別為¥2和¥5。
大禮包1,你可以以¥5的**購買3a和0b。
大禮包2, 你可以以¥10的**購買1a和2b。
你需要購買3個a和2個b, 所以你付了¥10購買了1a和2b(大禮包2),以及¥4購買2a。
示例 2:
輸入: [2,3,4], [[1,1,0,4],[2,2,1,9]], [1,2,1]
輸出: 11
解釋:a,b,c的**分別為¥2,¥3,¥4.
你可以用¥4購買1a和1b,也可以用¥9購買2a,2b和1c。
你需要買1a,2b和1c,所以你付了¥4買了1a和1b(大禮包1),以及¥3購買1b, ¥4購買1c。
你不可以購買超出待購清單的物品,儘管購買大禮包2更加便宜。
說明:最多6種物品, 100種大禮包。
每種物品,你最多隻需要購買6個。
你不可以購買超出待購清單的物品,即使更便宜。
思路:
分組揹包裸題不解釋
class
solution
now.
push_back(1
);for(
int j = i +
1;j <
6;j++
) now.
push_back
(price[i]);
special.
push_back
(now);}
for(
int i =
0;i < special.
size()
;i++
) special[i]
.push_back
(num);}
for(
int i =
0;i < special.
size()
;i++)if
(flag)
continue
; dp[now[0]
][now[1]
][now[2]
][now[3]
][now[4]
][now[5]
]=min(dp[now[0]
][now[1]
][now[2]
][now[3]
][now[4]
][now[5]
],dp[now[0]
- special[i][0
]][now[1]
- special[i][1
]][now[2]
- special[i][2
]][now[3]
- special[i][3
]][now[4]
- special[i][4
]][now[5]
- special[i][5
]]+ special[i][6
]);}
}}}}
}}return dp[needs[0]
][needs[1]
][needs[2]
][needs[3]
][needs[4]
][needs[5]
];}}
;
Python高階之路 6 3 8 update方法
update方法可以用乙個字典中的元素更新另外乙個字典。該方法接收乙個引數,該引數表示用作更新資料的字典資料來源。如dict1.update dict2 可以用dict2中的元素更新dict1。如果dict2中的key value對在dict1中不存在,那麼會在dict1中新增乙個新的key val...
lintcode 638 字元同構
給定兩個字串 s 和 t 確定它們是否是同構的。兩個字串是同構的如果 s 中的字元可以被替換得到 t。所有出現的字元必須用另乙個字元代替,同時保留字串的順序。沒有兩個字元可以對映到同乙個字元,但乙個字元可以對映到自己。樣例 樣例 1 輸入 s egg t add 輸出 true 說明 e a,g d...
NYOJ 638 小媛在努力(水)
時間限制 1000 ms 記憶體限制 65535 kb 難度 2 描述 在多 資料處理中,資料壓縮演算法尤為重要。小媛上完課後就想自己發明乙個資料壓縮演算法。她想呀想,終於想到乙個方法。在多 資料中有很多資料都是重複的,所以她想把連續相同的資料用資料出現的次數和資料本身表示。例如 1 1 1 2 3...