#include int recursivePairFinder( int numElements, int numStates, int myElementID, int elementList[], int pairs ) { int myPairs = pairs; if( myElementID < numElements ) { for( int i = 0; i < numStates; i++ ) { elementList[myElementID] = i; myPairs = recursivePairFinder( numElements, numStates, myElementID + 1, elementList, myPairs ); } } else { bool pFound = false; for( int p = 0; p < numElements; p++ ) { for( int s = p + 1; s < numElements; s++ ) { if( elementList[p] == elementList[s] ) { myPairs++; pFound = true; break; } } if( pFound ) { break; } } } return myPairs; } int main( int argc, char** argv ) { int numElements = 4; int numStates = 125; int elements[] = {0,0,0,0}; int nums = recursivePairFinder( numElements, numStates, 0, elements, 0 ); std::cout << "Answer: " << nums << std::endl; return 0; }