九日集训(第三天)数组
{解释这个程序}
6、拿硬币
int minCount(int* coins, int coinsSize){
int i;
int ans = 0;
for(i = 0; i < coinsSize; ++i){
ans += (coins[i]+1)/2;
}
return ans;
}
(1) 这个问题其实就是奇数 和 偶数 的情况分别处理即可,考虑一个数 x,如果是奇数,就要返回 (x+1)/2;如果是偶数,则返回 x/2。当然也可以合并,利用 C语言整数除法是取下整的性质,可以都用 (x+1)/2。
这个程序的目的是为了计算拿完一系列硬币堆中所有硬币所需的最小次数。每次可以拿1或2枚硬币。程序通过遍历硬币堆数组,并对每个硬币堆的硬币数进行处理,如果硬币数为奇数,则拿的次数为(x+1)/2;如果硬币数为偶数,则拿的次数为x/2,但因为 C 语言在做整数除法时向下取整,所以无论硬币数是奇数还是偶数,都可以使用(x+1)/2来计算每堆硬币拿的次数。最后返回所有硬币堆拿取次数的总和。
三、课后习题
课后所有习题,在上文都能找到答案,所以务必刷掉 四道 以上。第三天了,再坚持一天 TM 就是旅程的一半了,你好意思放弃!你这个年龄,好意思放弃!? 坚持!加油!你可以的!