c_cpp 找到偶数和的子阵列数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 找到偶数和的子阵列数相关的知识,希望对你有一定的参考价值。
/*
http://ideone.com/xeKHJH
http://www.geeksforgeeks.org/find-number-subarrays-even-sum/
http://www.practice.geeksforgeeks.org/problem-page.php?pid=948
*/
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int countEvenSum(int a[], int n){
int count = 0;
for(int i=0; i<n; i++){
int sum = 0;
for(int j=i; j<n; j++){
sum += a[j];
if(sum % 2 == 0)
count++;
}
}
return count;
}
int main() {
int t, n;
cin >> t;
while(t--){
cin >> n;
int a[101];
for(int i=0; i<n; i++)
cin >> a[i];
cout << countEvenSum(a, n) << endl;
}
return 0;
}
/*
http://ideone.com/0eFi2g
http://www.geeksforgeeks.org/find-number-subarrays-even-sum/
http://www.practice.geeksforgeeks.org/problem-page.php?pid=948
*/
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int countEvenSum(int a[], int n){
int temp[2] = {1, 0};
int result = 0, sum=0;
for(int i=0; i<n; i++){
sum = ((sum + a[i]) % 2 + 2) % 2;
temp[sum]++;
}
result = result + (temp[0] * (temp[0] - 1) / 2);
result = result + (temp[1] * (temp[1] - 1) / 2);
return result;
}
int main() {
int t, n;
cin >> t;
while(t--){
cin >> n;
int a[101];
for(int i=0; i<n; i++)
cin >> a[i];
cout << countEvenSum(a, n) << endl;
}
return 0;
}
以上是关于c_cpp 找到偶数和的子阵列数的主要内容,如果未能解决你的问题,请参考以下文章
c_cpp 增长最快的子阵列
c_cpp 最便宜的子阵列
c_cpp 最大子阵列总和。在具有最大总和的数组(包含至少一个数字)中查找连续的子数组。
C语言1-100求偶数和的程序
2.打印给定数组中元素和为0的所有子数组
c_cpp C程序找到从1到N的奇数和偶数之和