LeetCode 638 大禮包(分組揹包)

2021-10-18 16:28:54 字數 1958 閱讀 3645

在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...