I have the following algorithm for listing permutations but i cannot properly implement in C program:-
Code:
Algorithm Perm(a,k,n)
{
if (k = n) then write (a[1:n]); // output permutation
else // a[k:n] has more than one permutation
// Generate these recursively
for i := k to n do
{
t := a[k]; a[k] := a[i]; a[i] := t;
Perm(a,k+1,n);
// All permutations of a[k+1:n]
t := a[k]; a[k] := a[i]; a[i] := t;
}
}
I have coded the following but it does not work:-
Code:
#include <stdio.h>
#include <stdlib.h>
void Perm(char[],unsigned,unsigned);
void Perm(char a[],unsigned k,unsigned n)
{
if(k == n-1)
printf("%s\n",a);
else
{
for(unsigned i = k;i < n;i++)
{
char t = a[k]; a[k] = a[i]; a[i] = t;
Perm(a,k+1,n-1);
t = a[k]; a[k] = a[i]; a[i] = t;
}
}
}
int main(void)
{
unsigned n;
char *a;
printf("Enter the size of the number : ");
scanf("%u",&n);
a = (char*)malloc(n*sizeof(char));
printf("\nEnter the number : ");
scanf("%s",a);
Perm(a,0,n-1);
system("pause");
return 0;
}