演算法 拿硬幣
桌上有 n 堆硬幣,每堆的數量儲存在陣列 arr 中。我們每次可以選擇任意一堆,拿走其中的一枚或者兩枚,求拿完所有硬幣的最少次數。
示例 1:
輸入:[4,2,1]
輸出:4
解釋:第一堆硬幣幣最少需要拿 2 次,第二堆最少需要拿 1 次,第三堆最少需要拿 1 次,總共 4 次即可拿完。
示例 2:
輸入:[2,3,10]
int TakeCoin(vector& coin)
{
int cnt = 0;
for (auto c : coin)
{
cnt += c / 2; // 前幾次都拿兩枚硬幣
cnt += c % 2; // 不夠兩枚,拿一枚
}
return cnt;
}
輸出:8
演算法一:
int minCount(int* arr, int num)
{
int i, count = 0;
for (i = 0;i < num;i++)
{
if (arr[i] % 2 != 0)//不能整除 次數+1
{
count += (arr[i] + 1) / 2;
}
else { //整除
count += arr[i] / 2;
}
}
return count;
}
演算法二:
int TakeCoin(vector<int>& coin)
{
int cnt = 0;
for (auto c : coin)
{
cnt += c / 2; // 前幾次都拿兩枚硬幣
cnt += c % 2; // 不夠兩枚,拿一枚
}
return cnt;
}
測試測試用例:
int main()
{
vector<int> coin1 = { 4,2,1 };
auto ret1 = TakeCoin(coin1);
vector<int> coin2 = { 2,3,10 };
auto ret2 = TakeCoin(coin2);
cout << ret1 << " " << ret2 << endl;
return 0;
}
相關文章
- python演算法:換硬幣Python演算法
- 演算法學習之路|稱量硬幣(模擬)演算法
- 貪心演算法解硬幣找零問題演算法
- 硬幣購物
- 演算法提高 拿糖果演算法
- EM演算法學習筆記與三硬幣模型推導演算法筆記模型
- 資料結構與演算法之硬幣組合問題資料結構演算法
- DAG模型——硬幣問題模型
- leedcode-排列硬幣
- 藍橋杯-翻硬幣
- 拋硬幣(機率dp)
- 硬幣系列三 | 硬幣自動分類的一個論文復現
- 拋硬幣中的反射原理反射
- 領釦LintCode演算法問題答案-988. 硬幣擺放演算法
- 藍橋杯-矩陣翻硬幣矩陣
- LeetCode-441-排列硬幣LeetCode
- 鴻蒙NEXT開發案例:拋硬幣鴻蒙
- 動態規劃---求硬幣最優解動態規劃
- 動態規劃-硬幣組合數目動態規劃
- 比特幣演算法比特幣演算法
- LeetCode每日一題: 排列硬幣(No.441)LeetCode每日一題
- leecode.面試題.08.11.硬幣面試題
- 動態規劃-最少硬幣組合問題動態規劃
- [動態規劃] 三、最少硬幣組成某面值動態規劃
- 歷屆試題 矩陣翻硬幣 (藍橋杯)矩陣
- 藍橋杯 演算法提高 拿糖果(完全揹包dp)演算法
- 美國證監會投資者教育主任:不要拋硬幣來決定加密貨幣投資加密
- B 站 硬幣獎勵不合理規則 All In One
- 日本SBI Holdings投資加密貨幣硬體錢包公司加密
- 二值影象分析:案例實戰(文字分離+硬幣計數)
- 樂視CES釋出超級薄電視 僅兩枚硬幣厚度
- wordpress拿WebShellWebshell
- 洛谷P2964 [USACO09NOV]硬幣的遊戲A Coin Game遊戲GAM
- 中國央行新行長重申對加密貨幣的強硬立場加密
- 演算法工程師如何拿結果:走過低谷,先立信念演算法工程師
- 詳解動態規劃最少硬幣找零問題–JavaScript實現動態規劃JavaScript
- C#中的深度學習(四):使用Keras.NET識別硬幣C#深度學習Keras
- 使用動態規劃完美解決硬幣找零問題(Python)動態規劃Python