题目描述:
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);
}