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的奇数和偶数之和