#include<stdio.h>
#include<stdlib.h>
int checkifsafe( char * s)
{
int sum = 0 ;
while ( * s)
{
* s++== '{' ? sum++: sum--;
if ( sum<- 1 )
return 0 ;
}
return 1 ;
}
void printset( char * s)
{
if ( checkifsafe( s) )
{
while ( * s)
}
}
void initialize( char * s, int n)
{
int i;
for ( i= 0 ; i< n; i++ )
{
s[ i] = '{' ;
s[ i + n] = '}' ;
}
s[ 2 * n] = '\0 ' ;
}
void swap( char * a, char * b)
{
char t = * a;
* a = * b;
* b = t;
}
int check( char * s, int i, int c)
{
int j;
for ( j= c; j< i; j++ )
{
if ( s[ j] == s[ i] )
return 0 ;
}
return 1 ;
}
void permute( char * s, int c, int n)
{
int i;
if ( c>= n- 1 )
printset( s) ;
else
{
for ( i= c; i< n; i++ )
{
if ( check( s, i, c) || i== c)
{
swap( s+ i, s+ c) ;
permute( s, c+ 1 , n) ;
swap( s+ i, s+ c) ;
}
}
}
}
int main( int argc, int ** argv)
{
int n;
n--;
char * s
= ( char * ) malloc ( sizeof ( 2 * n
+ 1 ) ) ; initialize( s, n) ;
permute( s, 0 , 2 * n) ;
return 0 ;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkbGliLmg+CgppbnQgY2hlY2tpZnNhZmUoY2hhciAqcykKewoJaW50IHN1bSA9MDsKCXdoaWxlKCpzKQoJewoJCSpzKys9PSd7Jz9zdW0rKzpzdW0tLTsKCQlpZihzdW08LTEpCgkJCXJldHVybiAwOwoJfQoJcmV0dXJuIDE7Cn0KCnZvaWQgcHJpbnRzZXQoY2hhciAqcykKewoJaWYoY2hlY2tpZnNhZmUocykpCgl7CgkJcHJpbnRmKCJ7Iik7CgkJd2hpbGUoKnMpCgkJCXByaW50ZigiJWMiLCpzKyspOwoJCXByaW50ZigifVxuIik7Cgl9Cn0KCnZvaWQgaW5pdGlhbGl6ZShjaGFyICpzLGludCBuKQp7CglpbnQgaTsKCWZvcihpPTA7aTxuO2krKykKCXsKCQlzW2ldID0gJ3snOwoJCXNbaSArIG5dID0gJ30nOwoJfQoJc1syKm5dID0gJ1wwJzsKfQoKdm9pZCBzd2FwKGNoYXIgKmEsY2hhciAqYikKewoJY2hhciB0ID0gKmE7CgkqYSA9ICpiOwoJKmIgPSB0Owp9CgppbnQgY2hlY2soY2hhciAqcyxpbnQgaSxpbnQgYykKewoJaW50IGo7Cglmb3Ioaj1jO2o8aTtqKyspCgl7CgkJaWYoc1tqXT09c1tpXSkKCQkJcmV0dXJuIDA7Cgl9CglyZXR1cm4gMTsKfQoKdm9pZCBwZXJtdXRlKGNoYXIgKnMsIGludCBjLCBpbnQgbikKewoJaW50IGk7CglpZihjPj1uLTEpCgkJcHJpbnRzZXQocyk7CgllbHNlCgl7CgkJZm9yKGk9YztpPG47aSsrKQoJCXsKCQkJaWYoY2hlY2socyxpLGMpIHx8IGk9PWMpCgkJCXsKCQkJCXN3YXAocytpLHMrYyk7CgkJCQlwZXJtdXRlKHMsYysxLG4pOwoJCQkJc3dhcChzK2kscytjKTsKCQkJfQoJCX0KCX0KfQoKaW50IG1haW4oaW50IGFyZ2MsaW50ICoqYXJndikKewoJaW50IG47CglwcmludGYoImVudGVyIHNldCBudW1iZXJcbiIpOwoJc2NhbmYoIiVkIiwmbik7CgluLS07CgljaGFyICpzID0gKGNoYXIgKiltYWxsb2Moc2l6ZW9mKDIqbisxKSk7Cglpbml0aWFsaXplKHMsbik7CglwZXJtdXRlKHMsMCwyKm4pOwoJcmV0dXJuIDA7Cn0K
compilation info
prog.c:75: warning: second argument of ‘main’ should be ‘char **’
prog.c: In function ‘main’:
prog.c:79: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result
stdout
enter set number
{{{{{}}}}}
{{{{}{}}}}
{{{{}}{}}}
{{{{}}}{}}
{{{{}}}}{}
{{{}{{}}}}
{{{}{}{}}}
{{{}{}}{}}
{{{}{}}}{}
{{{}}{{}}}
{{{}}{}{}}
{{{}}{}}{}
{{{}}}{{}}
{{{}}}{}{}
{{}{{{}}}}
{{}{{}{}}}
{{}{{}}{}}
{{}{{}}}{}
{{}{}{{}}}
{{}{}{}{}}
{{}{}{}}{}
{{}{}}{{}}
{{}{}}{}{}
{{}}{{{}}}
{{}}{{}{}}
{{}}{{}}{}
{{}}{}{{}}
{{}}{}{}{}
{}{{{{}}}}
{}{{{}{}}}
{}{{{}}{}}
{}{{{}}}{}
{}{{}{{}}}
{}{{}{}{}}
{}{{}{}}{}
{}{{}}{{}}
{}{{}}{}{}
{}{}{{{}}}
{}{}{{}{}}
{}{}{{}}{}
{}{}{}{{}}
{}{}{}{}{}