题目描述:
Description
桌上有 n
堆硬币,每堆的数量保存在数组 coins
中。我们每次可以选择任意一堆,拿走其中的一枚或者两枚,求拿完所有硬币的最少次数。
Input
第一行输入硬币数组长度
第二行输入硬币个数
0<= coins长度<=10
0<= coins[i]<=10
Output
拿完所有硬币最少操作次数
Sample Input1
3
4 2 1
Sample Output1
4
解释:最少需要拿4次硬币
Sample Input2
3
3 2 10
Sample Output2
8
解释:最少需要拿8次硬币
算法:
代码实现:
# include<stdio.h>int main(){int n;scanf("%d",&n);int arr[n];for(int i=0;i<n;i++) scanf("%d",&arr[i]);int cnt=0;//操作次数for(int i=0;i<n;i++){ //分奇偶数情况//偶数情况://如:8-->4次即可(对应%)if(arr[i]%2==0) cnt+=arr[i]/2;else{//奇数情况//如:7-->4次(对应/)cnt+=arr[i]/2;cnt++;}}printf("%d\n",cnt);
}