你打算做甜點,現在需要購買配料。目前共有 n 種冰激凌基料和 m 種配料可供選購。而製作甜點需要遵循以下幾條規則:
必須選擇 一種 冰激凌基料。
可以新增 一種或多種 配料,也可以不新增任何配料。
每種型別的配料 最多兩份 。
給你以下三個輸入:
basecosts ,乙個長度為 n 的整數陣列,其中每個 basecosts[i] 表示第 i 種冰激凌基料的**。
toppingcosts,乙個長度為 m 的整數陣列,其中每個 toppingcosts[i] 表示 乙份 第 i 種冰激凌配料的**。
target ,乙個整數,表示你製作甜點的目標**。
你希望自己做的甜點總成本盡可能接近目標** target 。
返回最接近 target 的甜點成本。如果有多種方案,返回 成本相對較低 的一種。
示例
輸入:basecosts = [1,7], toppingcosts = [3,4], target = 10
輸出:10
解釋:考慮下面的方案組合(所有下標均從 0 開始):
- 選擇 1 號基料:成本 7
- 選擇 1 份 0 號配料:成本 1 x 3 = 3
- 選擇 0 份 1 號配料:成本 0 x 4 = 0
總成本:7 + 3 + 0 = 10 。
提示
n == basecosts.length
m == toppingcosts.length
1 <= n, m <= 10
1 <= basecosts[i], toppingcosts[i] <= 104
1 <= target <= 104
假如用base來代表當前甜品的成本,那麼每次選擇一種基料和多種配料之後都應該增加base成本。由於基料只能選擇一種,所以必須針對每一種基料來計算當前基料和額外選擇的配料的成本
每種配料最多選擇兩次,故需要乙個陣列來記錄已經訪問過的次數visited
參考**
class
solution
return mincost;
}private
void
dfs(
int[
] toppingcosts,
int target,
int base)
if(base > target)
return
;for
(int i =
0; i < toppingcosts.length; i++)}
}
最接近目標數的三數之和
給定乙個包括 n 個整數的陣列 nums 和 乙個目標值 target。找出 nums 中的三個整數,使得它們的和與 target 最接近。返回這三個數的和。假定每組輸入只存在唯一答案。本題只需要對上一題求三數之和進行少許的修改即可。思路 仍採用雙指標的思路,只不過需要記錄每次移動過程 現的最近的值...
1755 最接近目標值的子串行和
給你乙個整數陣列 nums 和乙個目標值 goal 你需要從 nums 中選出乙個子串行,使子串行元素總和最接近 goal 也就是說,如果子串行元素和為 sum 你需要 最小化絕對差 abs sum goal 返回 abs sum goal 可能的 最小值 注意,陣列的子串行是通過移除原始陣列中的某...
查詢和目標數最接近的或者相等的數
此文 部落格 自己學習標記下,感謝博主。查詢出最接近目標值的數,並返回。param array param targetnum return html view plain copy public static int binarysearchkey object array,int targetn...