C語言——拿硬幣(力扣2020春季周賽題)
桌上有 n 堆力扣幣,每堆的數(shù)量保存在數(shù)組 coins 中。我們每次可以選擇任意一堆,拿走其中的一枚或者兩枚,求拿完所有力扣幣的最少次數(shù)。
示例 1:
輸入:[4,2,1]
輸出:4
解釋:第一堆力扣幣最少需要拿 2 次,第二堆最少需要拿 1 次,第三堆最少需要拿 1 次,總共 4 次即可拿完。
示例 2:
輸入:[2,3,10]
輸出:8
限制:
1 <= n <= 4
1 <= coins[i] <= 10
解題思路:直接依次遍歷每一堆硬幣,拿走一或者二枚硬幣,即分為偶數(shù)和奇數(shù),偶數(shù)直接除以2加入count內(nèi),奇數(shù)則除以2再加上1即可。
代碼:
int?minCount(int*?coins,?int?coinsSize){
????int?count=0;
????int?i;
????for(i=0;i<coinsSize;i++)
????{
????????while(coins[i]!=0)
????????{
????????????if(coins[i]%2==0)
????????????{???
????????????????count+=coins[i]/2;
????????????????coins[i]=0;
????????????}
????????????if(coins[i]%2!=0)
????????????{
????????????????count+=coins[i]/2+1;
????????????????coins[i]=0;
????????????}
????????}
????}
????return?count;
}
標(biāo)簽: