即使在C ++中,最小移除也可以使数组求和
问题陈述
给定一个N个整数的数组arr[]。我们需要编写一个程序来查找需要从数组中删除的最小元素数,以便剩余元素的总和为偶数。
示例
如果输入数组为{10,20,30,5},那么我们需要删除一个元素(即5)以使数组求和
算法
1. Sum of any number of even numbers is always even 2. Sum of odd numbers of odd numbers is always odd 3. Sum of odd numbers of even times is always even 4. Count the number of odd elements in the array. If the count of odd elements in the array is even, then we do not need to remove any element from the array but if the count of odd elements in the array is odd then by removing any one of the odd elements from the array
示例
#include <bits/stdc++.h>
using namespace std;
int getMinRemovals(int *arr, int n) {
int cnt = 0;
for (int i = 0; i < n; ++i) {
if (arr[i] % 2 == 1) {
++cnt;
}
}
return (cnt % 2 == 0) ? 0 : 1;
}
int main() {
int arr[] = {10, 20, 30, 5};
int n = sizeof(arr) / sizeof(arr[0]);
cout << "Minimum required removals = " << getMinRemovals(arr, n) << endl;
return 0;
}当您编译并执行上述程序时。它产生以下输出
输出结果
Minimum required removals = 1
热门推荐
10 儿子立冬祝福语简短独特
11 对当兵的祝福语简短
12 侄儿高考试祝福语简短
13 伴郎红包祝福语朋友简短
14 媳妇生日简短祝福语朋友
15 公司年会祝福语简短最好
16 元旦感恩祝福语简短大全
17 红包祝福语简短10字
18 周六早晨祝福语简短