Number of permutations such that sum of elements at odd index and even index are equal
Last Updated :
11 Jul, 2025
Given N numbers, find the number of permutations in which the sum of elements at odd index and sum of elements at even index are equal.
Examples:
Input: 1 2 3
Output: 2
The permutations are:
1 3 2 sum at odd index = 1+2 = 3, sum at even index = 3
2 3 1 sum at odd index = 2+1 = 3, sum at even index = 3
Input: 1 2 1 2
Output: 3
The permutations are:
1 2 2 1
2 1 1 2
2 2 1 1
The approach to the problem will be to use next_permutation() in C++ STL which helps to generate all the possible permutation of N numbers. If the sum of the odd index elements is equal to the sum of even index elements of the generated permutation, then increase the count. When all permutations are checked, print the count.
Below is the implementation of the above approach:
C++
// C++ program to find number of permutations
// such that sum of elements at odd index
// and even index are equal
#include <bits/stdc++.h>
using namespace std;
// Function that returns the number of permutations
int numberOfPermutations(int a[], int n)
{
int sumEven, sumOdd, c = 0;
// iterate for all permutations
do {
// stores the sum of odd and even index elements
sumEven = sumOdd = 0;
// iterate for elements in permutation
for (int i = 0; i < n; i++) {
// if odd index
if (i % 2)
sumOdd += a[i];
else
sumEven += a[i];
}
// If condition holds
if (sumOdd == sumEven)
c++;
} while (next_permutation(a, a + n));
// return the number of permutations
return c;
}
// Driver Code
int main()
{
int a[] = { 1, 2, 3 };
int n = sizeof(a) / sizeof(a[0]);
// Calling Function
cout << numberOfPermutations(a, n);
return 0;
}
Java
// Java program to find number of permutations
// such that sum of elements at odd index
// and even index are equal
class GFG {
// Function that returns the number of permutations
static int numberOfPermutations(int a[], int n) {
int sumEven, sumOdd, c = 0;
// iterate for all permutations
do {
// stores the sum of odd and even index elements
sumEven = sumOdd = 0;
// iterate for elements in permutation
for (int i = 0; i < n; i++) {
// if odd index
if (i % 2 == 0) {
sumOdd += a[i];
} else {
sumEven += a[i];
}
}
// If condition holds
if (sumOdd == sumEven) {
c++;
}
} while (next_permutation(a));
// return the number of permutations
return c;
}
static boolean next_permutation(int[] p) {
for (int a = p.length - 2; a >= 0; --a) {
if (p[a] < p[a + 1]) {
for (int b = p.length - 1;; --b) {
if (p[b] > p[a]) {
int t = p[a];
p[a] = p[b];
p[b] = t;
for (++a, b = p.length - 1; a < b; ++a, --b) {
t = p[a];
p[a] = p[b];
p[b] = t;
}
return true;
}
}
}
}
return false;
}
// Driver Code
public static void main(String args[]) {
int a[] = {1, 2, 3};
int n = a.length;
System.out.println(numberOfPermutations(a, n));
}
}
/*This code is contributed by 29AjayKumar*/
Python3
# Python3 program to find number of permutations
# such that sum of elements at odd index
# and even index are equal
def next_permutation(arr):
arrCount = len(arr);
# the head of the suffix
i = arrCount - 1;
# find longest suffix
while (i > 0 and arr[i] <= arr[i - 1]):
i-=1;
# are we at the last permutation already?
if (i <= 0):
return [False,arr];
# get the pivot
pivotIndex = i - 1;
# find rightmost element that exceeds the pivot
j = arrCount - 1;
while (arr[j] <= arr[pivotIndex]):
j-=1;
# swap the pivot with j
temp = arr[pivotIndex];
arr[pivotIndex] = arr[j];
arr[j] = temp;
# reverse the suffix
j = arrCount - 1;
while (i < j):
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
i+=1;
j-=1;
return [True,arr];
# Function that returns the number
# of permutations
def numberOfPermutations(a, n):
sumEven=0;
sumOdd=0;
c = 0;
# iterate for all permutations
while (True):
# stores the sum of odd and
# even index elements
sumEven = 0;
sumOdd = 0;
# iterate for elements in permutation
for i in range(n):
# if odd index
if (i % 2):
sumOdd += a[i];
else:
sumEven += a[i];
# If condition holds
if (sumOdd == sumEven):
c+=1;
xx=next_permutation(a);
if(xx[0]==False):
break;
a=xx[1];
# return the number of permutations
return c;
# Driver Code
a = [1, 2, 3];
n = len(a);
# Calling Function
print(numberOfPermutations(a, n));
# This code is contributed by mits
C#
// C# program to find number of permutations
// such that sum of elements at odd index
// and even index are equal
using System;
public class GFG {
// Function that returns the number of permutations
static int numberOfPermutations(int []a, int n) {
int sumEven, sumOdd, c = 0;
// iterate for all permutations
do {
// stores the sum of odd and even index elements
sumEven = sumOdd = 0;
// iterate for elements in permutation
for (int i = 0; i < n; i++) {
// if odd index
if (i % 2 == 0) {
sumOdd += a[i];
} else {
sumEven += a[i];
}
}
// If condition holds
if (sumOdd == sumEven) {
c++;
}
} while (next_permutation(a));
// return the number of permutations
return c;
}
static bool next_permutation(int[] p) {
for (int a = p.Length - 2; a >= 0; --a) {
if (p[a] < p[a + 1]) {
for (int b = p.Length - 1;; --b) {
if (p[b] > p[a]) {
int t = p[a];
p[a] = p[b];
p[b] = t;
for (++a, b = p.Length - 1; a < b; ++a, --b) {
t = p[a];
p[a] = p[b];
p[b] = t;
}
return true;
}
}
}
}
return false;
}
// Driver Code
public static void Main() {
int []a = {1, 2, 3};
int n = a.Length;
Console.WriteLine(numberOfPermutations(a, n));
}
}
/*This code is contributed by 29AjayKumar*/
PHP
<?php
// PHP program to find number of permutations
// such that sum of elements at odd index
// and even index are equal
function next_permutation(&$input)
{
$inputCount = count($input);
// the head of the suffix
$i = $inputCount - 1;
// find longest suffix
while ($i > 0 && $input[$i] <= $input[$i - 1])
{
$i--;
}
// are we at the last permutation already?
if ($i <= 0)
{
return false;
}
// get the pivot
$pivotIndex = $i - 1;
// find rightmost element that exceeds the pivot
$j = $inputCount - 1;
while ($input[$j] <= $input[$pivotIndex])
{
$j--;
}
// swap the pivot with j
$temp = $input[$pivotIndex];
$input[$pivotIndex] = $input[$j];
$input[$j] = $temp;
// reverse the suffix
$j = $inputCount - 1;
while ($i < $j)
{
$temp = $input[$i];
$input[$i] = $input[$j];
$input[$j] = $temp;
$i++;
$j--;
}
return true;
}
// Function that returns the number
// of permutations
function numberOfPermutations($a, $n)
{
$sumEven;
$sumOdd;
$c = 0;
// iterate for all permutations
do {
// stores the sum of odd and
// even index elements
$sumEven = $sumOdd = 0;
// iterate for elements in permutation
for ($i = 0; $i < $n; $i++)
{
// if odd index
if ($i % 2)
$sumOdd += $a[$i];
else
$sumEven += $a[$i];
}
// If condition holds
if ($sumOdd == $sumEven)
$c++;
} while (next_permutation($a));
// return the number of permutations
return $c;
}
// Driver Code
$a = array(1, 2, 3);
$n = count($a);
// Calling Function
echo numberOfPermutations($a, $n);
// This code is contributed by
// Rajput-Ji
?>
JavaScript
<script>
// javascript program to find number of permutations
// such that sum of elements at odd index
// and even index are equal // Function that returns the number of permutations
function numberOfPermutations( a , n) {
var sumEven, sumOdd, c = 0;
// iterate for all permutations
do {
// stores the sum of odd and even index elements
sumEven = sumOdd = 0;
// iterate for elements in permutation
for (var i = 0; i < n; i++) {
// if odd index
if (i % 2 == 0) {
sumOdd += a[i];
} else {
sumEven += a[i];
}
}
// If condition holds
if (sumOdd == sumEven) {
c++;
}
} while (next_permutation(a));
// return the number of permutations
return c;
}
function next_permutation(p) {
for (var a = p.length - 2; a >= 0; --a) {
if (p[a] < p[a + 1]) {
for (var b = p.length - 1;; --b) {
if (p[b] > p[a]) {
var t = p[a];
p[a] = p[b];
p[b] = t;
for (++a, b = p.length - 1; a < b; ++a, --b) {
t = p[a];
p[a] = p[b];
p[b] = t;
}
return true;
}
}
}
}
return false;
}
// Driver Code
var a = [ 1, 2, 3 ];
var n = a.length;
document.write(numberOfPermutations(a, n));
// This code contributed by Princi Singh
</script>
Time Complexity: O(N! * N)
Auxiliary Space: O(1) because it is using constant space for variables
Similar Reads
Find the Array Permutation having sum of elements at odd indices greater than sum of elements at even indices Given an array arr[] consisting of N integers, the task is to find the permutation of array elements such that the sum of odd indices elements is greater than or equal to the sum of even indices elements. Examples: Input: arr[] = {1, 2, 3, 4}Output: 1 4 2 3 Explanation:Consider the permutation of th
6 min read
Print indices of array elements whose removal makes the sum of odd and even-indexed elements equal Given an array arr[] of size N, the task is to find indices of array elements whose removal makes the sum of odd and even indexed elements equal. If no such element exists, then print -1. Examples: Input: arr[] = {4, 1, 6, 2} Output: 1 Explanation: Removing arr[1] modifies arr[] to {4, 6, 2} Sum of
13 min read
Number of permutations such that pair of indices having odd sum have parity = K Given an array arr[] of N distinct elements along with an integer K (0 or 1). The task is to find the number of permutations of arr[] such that all possible pairs of indices (i, j) having odd sum ((i + j) must be odd) must follow ((arr[i] + arr[j]) % 2) = K. Note: The number of permutations can be v
12 min read
Count of permutations such that sum of K numbers from given range is even Given a range [low, high], both inclusive, and an integer K, the task is to select K numbers from the range(a number can be chosen multiple times) such that the sum of those K numbers is even. Print the number of all such permutations. Examples: Input: low = 4, high = 5, k = 3 Output: 4 Explanation:
7 min read
Count subarrays having sum of elements at even and odd positions equal Given an array arr[] of integers, the task is to find the total count of subarrays such that the sum of elements at even position and sum of elements at the odd positions are equal. Examples: Input: arr[] = {1, 2, 3, 4, 1}Output: 1Explanation: {3, 4, 1} is the only subarray in which sum of elements
6 min read
Construct an Array of size N in which sum of odd elements is equal to sum of even elements Given an integer N which is always even, the task is to create an array of size N which contains N/2 even numbers and N/2 odd numbers. All the elements of array should be distinct and the sum of even numbers is equal to the sum of odd numbers. If no such array exists then print -1.Examples: Input: N
7 min read