#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void print_permutation(char path[], int n)
{
int i = 0;
for(i = 0; i < n; i++)
}
void permutate(char a, int Na, char b, int Nb, char c, int Nc, int n, char path[], int index)
{
if(index == n )
{
if(Na != n - 3 && Nb == 1 && Nc == 2)
path[index++] = a;
else if(Na == n - 3 && Nb != 1 && Nc == 2)
path[index++] = b;
else if(Na == n - 3 && Nb == 1 && Nc != 2)
path[index++] = c;
print_permutation(path, index);
return;
}
if(Na != n)
{
path[index] = a;
permutate(a, Na + 1, b, Nb, c, Nc, n, path, index + 1);
}
if(Nb != 1)
{
path[index] = b;
permutate(a, Na, b, Nb + 1, c, Nc, n, path, index + 1);
}
if(Nc != 2)
{
path[index] = c;
permutate(a, Na, b, Nb, c, Nc + 1, n, path, index + 1);
}
}
int main()
{
char a, b, c;
printf("Enter 3 characters : \n");
int n;
printf("Enter the size of string : ");
char *path;
path
= (char *)malloc(n
* sizeof(char));
permutate(a, 0, b, 0, c, 0, n, path, 0);
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RyaW5nLmg+CiNpbmNsdWRlPHN0ZGxpYi5oPgoKdm9pZCBwcmludF9wZXJtdXRhdGlvbihjaGFyIHBhdGhbXSwgaW50IG4pCnsKICAgIGludCBpID0gMDsKICAgIGZvcihpID0gMDsgaSA8IG47IGkrKykKICAgICAgICBwcmludGYoIiVjIiwgcGF0aFtpXSk7CiAgICBwcmludGYoIlxuIik7Cn0Kdm9pZCBwZXJtdXRhdGUoY2hhciBhLCBpbnQgTmEsIGNoYXIgYiwgaW50IE5iLCBjaGFyIGMsIGludCBOYywgaW50IG4sIGNoYXIgcGF0aFtdLCBpbnQgaW5kZXgpCnsKICAgIGlmKGluZGV4ID09IG4gKQogICAgewogICAgICAgIGlmKE5hICE9IG4gLSAzICYmIE5iID09IDEgJiYgTmMgPT0gMikKICAgICAgICAgICAgcGF0aFtpbmRleCsrXSA9IGE7CiAgICAgICAgZWxzZSBpZihOYSA9PSBuIC0gMyAmJiBOYiAhPSAxICYmIE5jID09IDIpCiAgICAgICAgICAgIHBhdGhbaW5kZXgrK10gPSBiOwogICAgICAgIGVsc2UgaWYoTmEgPT0gbiAtIDMgJiYgTmIgPT0gMSAmJiBOYyAhPSAyKQogICAgICAgICAgICBwYXRoW2luZGV4KytdID0gYzsKICAgICAgICBwcmludF9wZXJtdXRhdGlvbihwYXRoLCBpbmRleCk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgaWYoTmEgIT0gbikKICAgIHsKICAgICAgICBwYXRoW2luZGV4XSA9IGE7CiAgICAgICAgcGVybXV0YXRlKGEsIE5hICsgMSwgYiwgTmIsIGMsIE5jLCBuLCBwYXRoLCBpbmRleCArIDEpOwogICAgfQogICAgaWYoTmIgIT0gMSkKICAgIHsKICAgICAgICBwYXRoW2luZGV4XSA9IGI7CiAgICAgICAgcGVybXV0YXRlKGEsIE5hLCBiLCBOYiArIDEsIGMsIE5jLCBuLCBwYXRoLCBpbmRleCArIDEpOwogICAgfQogICAgaWYoTmMgIT0gMikKICAgIHsKICAgICAgICBwYXRoW2luZGV4XSA9IGM7CiAgICAgICAgcGVybXV0YXRlKGEsIE5hLCBiLCBOYiwgYywgTmMgKyAxLCBuLCBwYXRoLCBpbmRleCArIDEpOwogICAgfQp9CmludCBtYWluKCkKewogICAgY2hhciBhLCBiLCBjOwogICAgcHJpbnRmKCJFbnRlciAzIGNoYXJhY3RlcnMgOiBcbiIpOwogICAgcHJpbnRmKCJhIDogIik7CiAgICBzY2FuZigiICVjIiwgJmEpOwogICAgcHJpbnRmKCJiIDogIik7CiAgICBzY2FuZigiICVjIiwgJmIpOwogICAgcHJpbnRmKCJjIDogIik7CiAgICBzY2FuZigiICVjIiwgJmMpOwoKICAgIGludCBuOwogICAgcHJpbnRmKCJFbnRlciB0aGUgc2l6ZSBvZiBzdHJpbmcgOiAiKTsKICAgIHNjYW5mKCIgJWQiLCAmbik7CiAgICAKICAgIGNoYXIgKnBhdGg7CiAgICBwYXRoID0gKGNoYXIgKiltYWxsb2MobiAqIHNpemVvZihjaGFyKSk7CgogICAgcGVybXV0YXRlKGEsIDAsIGIsIDAsIGMsIDAsIG4sIHBhdGgsIDApOwoKICAgIHByaW50ZigiXG4iKTsKICAgIHJldHVybiAwOwp9