给定一个数组,将最小数(应大于0)添加到数组中,以使数组的总和变为偶数。
输入 -1 2 3 4,
输出 -2
说明-数组的总和为10,所以我们
加上最小数2以使总和为偶数。
方法1:计算数组中所有元素的总和,然后检查总和是否为偶数,然后将最小值加为2,否则将最小值加为1。
输入 -1 2 3 4,
输出 -2
说明 - 数组的总和为10,因此我们加上最小值2以使总和均匀。
#include<iostream>
using namespace std;
int main() {
int arr[] = { 1, 2, 3, 4};
int n=4;
int sum=0;
for (int i = 0; i <n; i++) {
sum+=arr[i];
}
if (sum % 2==0) {
cout <<"2";
} else {
cout <<"1";
}
return 0;
}方法2-计算数组中元素的奇数计数。如果出现的奇数计数为偶数,则返回2,否则返回1。
输入 -1 2 3 4 5
输出 -1
说明 -否。数组中的of是3
加最小值1以使总和均匀。
#include<iostream>
using namespace std;
int main() {
int arr[] = { 1, 2, 3, 4,5};
int n=5;
int odd = 0;
for (int i = 0; i < n; i++) {
if (arr[i] % 2!=0) {
odd += 1;
}
}
if (odd % 2==0) {
cout <<"2";
} else {
cout <<"1";
}
return 0;
}方法3-取得 一个标志变量(初始化为0)。每当我们在数组中找到奇数元素时,我们都会对布尔变量执行NOT(!)操作。该逻辑运算符将标志变量的值取反(意味着如果它为0,则将变量转换为1,反之亦然)。
输入 -1 2 3 4 5
输出 -1
说明 -变量初始化为0。
遍历数组
1为奇数,变量更改为1。2
为偶数
3为奇数,变量更改为0。4
为偶数
5为奇数,变量更改为1
如果变量值为1,则表示存在奇数个奇数元素,使元素之和成为偶数的最小数量是加1。
其他最小数字为2。
#include<iostream>
using namespace std;
int main() {
int arr[] = { 1, 2, 3, 4,5};
int n=5;
bool odd = 0;
for (int i = 0; i < n; i++) {
if (arr[i] % 2!=0) {
odd = !odd;
}
}
if (odd) {
cout <<"1";
} else {
cout <<"2";
}
return 0;
}