演算法 拿硬幣
桌上有 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演算法
- 硬幣購物
- leedcode-排列硬幣
- 資料結構與演算法之硬幣組合問題資料結構演算法
- 領釦LintCode演算法問題答案-988. 硬幣擺放演算法
- 藍橋杯-翻硬幣
- 拋硬幣(機率dp)
- LeetCode-441-排列硬幣LeetCode
- 硬幣系列三 | 硬幣自動分類的一個論文復現
- 藍橋杯-矩陣翻硬幣矩陣
- LeetCode每日一題: 排列硬幣(No.441)LeetCode每日一題
- 鴻蒙NEXT開發案例:拋硬幣鴻蒙
- 拋擲硬幣的領先問題
- 整數劃分(硬幣問題)(dp)
- leecode.面試題.08.11.硬幣面試題
- 比特幣演算法比特幣演算法
- 動態規劃---求硬幣最優解動態規劃
- [動態規劃] 三、最少硬幣組成某面值動態規劃
- 藍橋杯 演算法提高 拿糖果(完全揹包dp)演算法
- 日本SBI Holdings投資加密貨幣硬體錢包公司加密
- B 站 硬幣獎勵不合理規則 All In One
- 手寫一個使用css3旋轉硬幣的效果CSSS3
- 演算法工程師如何拿結果:走過低谷,先立信念演算法工程師
- HNOI2017 拋硬幣(組合數學+擴充套件盧卡斯)套件
- 使用動態規劃完美解決硬幣找零問題(Python)動態規劃Python
- 英特爾想要比特幣挖礦硬體“加速器”專利比特幣
- 演算法、硬體、框架,2019年AI何去何從?演算法框架AI
- 詳解動態規劃最少硬幣找零問題–JavaScript實現動態規劃JavaScript
- 詳解動態規劃最少硬幣找零問題--JavaScript實現動態規劃JavaScript
- 中國央行新行長重申對加密貨幣的強硬立場加密
- C#中的深度學習(四):使用Keras.NET識別硬幣C#深度學習Keras
- 演算法穩定幣是未來趨勢?演算法
- Scrypt 不止是加密演算法,也是萊特幣的挖礦演算法加密演算法
- 《雙點醫院》和《醫院計劃》:一枚硬幣的正反面
- 關於一些基礎的dp——硬幣的那些事(dp的基本引入)
- C#中的深度學習(二):預處理識別硬幣的資料集C#深度學習
- 軟硬一體的演算法實踐,阿里雲如何以演算法實現場景 “再創新”?演算法阿里
- 比特幣礦業的三體問題:排放時間表,氣候週期和硬體迭代如何決定比特幣未來? — Anicca Research比特幣