硬币堆算法分析

题目描述:

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

int main(){
    int n;
    scanf("%d",&n);
    int arr[n];
    for(int i=0;i4次即可(对应%)
        if(arr[i]%2==0) cnt+=arr[i]/2;
        else{
            //奇数情况
            //如:7-->4次(对应/)
            cnt+=arr[i]/2;
            cnt++;
        }
    }
    printf("%d\n",cnt);
}

你可能感兴趣的:(算法,算法)