# print all the combinations of the digits of a given number

141 views

Algorithm to print all the number possible with the digits of a given number

eg :if input is "234",combinations possible are

234,243,324,342,432,423

posted Oct 12, 2013

Total number of combinations are Factorial N, this is what you are looking or wants to print the numbers also - assuming all distinct digits.

``````void permute(int a[], int i, int N)
{
int j;
if(i == N)
printf("\n%d%d%d%d",a[0],a[1],a[2],a[3]);
else
for ( j = i; j < N; j++)
{
a[i] = a[i] + a[j] - (a[j] = a[i]);
permute(a, i + 1, N);
a[i] = a[i] + a[j] - (a[j] = a[i]);
}
}

int main()
{
int a[] = {1,2,3,4};
permute(a,0,4);
return 0;
}
``````
Well done Vikas.

Try this (in C++ though u can write it again in C)

``````#include <iostream>
#include <algorithm>
using namespace std;

void outputArray(int* array, int size)
{
for (int i = 0; i < size; ++i) { cout << array[i] << " "; }
}

int main ()
{
int myints[] = { 1, 2, 3, 4, 5 };
const int size = sizeof(myints);

cout << "The 5! possible permutations with 5 elements:\n";

sort (myints, myints + size);

bool hasMorePermutations = true;
do
{
outputArray(myints, size);
hasMorePermutations = next_permutation(myints, myints + size);
}
while (hasMorePermutations);

return 0;
}
``````
where is this function "next_permutation" implemented.
Similar Questions

A number is called as a Jumping Number if all adjacent digits in it differ by 1. The difference between ‘9’ and ‘0’ is not considered as 1.
All single digit numbers are considered as Jumping Numbers. For example 7, 8987 and 4343456 are Jumping numbers but 796 and 89098 are not.

Given a positive number x, print all Jumping Numbers smaller than or equal to x. The numbers can be printed in any order.

Example:

Input: x = 20
Output: 0 1 2 3 4 5 6 7 8 9 10 12

Input: x = 105
Output: 0 1 2 3 4 5 6 7 8 9 10 12
21 23 32 34 43 45 54 56 65
67 76 78 87 89 98 101

Note: Order of output doesn't matter,
i,e., numbers can be printed in any order

Print cousins of a given node (Not sibling) ??

How can we count Number of Non Leaf Nodes of a given Tree ?

``````Example
40
/\
/  \
20    60
/ \    \
10  30   80
\
90
``````