[ create a new paste ] login | about

Link: http://codepad.org/281U66WI    [ raw code | output | fork ]

C, pasted on Nov 9:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void func( int n, char* s, int* f, char* w )
{
	int i, j;

	for( i = 0; i < n; i++ )
		if( w[i] == ' ' )	break;
	if( i == n ) {
		for( i = 0; i < n; i++ )
			putchar( w[i] );
		putchar( ',' );
		return;
	}
	j = i;
	for( i = 0; i < n; i++ ) {
		if( f[i] ) {
			w[j] = s[i];
			f[i] = 0;
			func( n, s, f, w );
			w[j] = ' ';
			f[i] = 1;
		}
	}
}
void permute( char* s )
{
	char* w;
	int* f;
	int n, i;

	n = strlen( s );
	f = (int*)malloc( n * sizeof( int ) );
	w = (char*)malloc( n );
	if( !w || !f )	exit( 0 );
	for( i = 0; i < n; i++ ) {
		w[i] = ' ';
		f[i] = 1;
	}
	func( n, s, f, w );

	free( (void*)w );
	free( (void*)f );
}
int main( void )
{
	char* s = "ABCD";

	permute( s );
	putchar( '\n' );
	return 0;
}


Output:
1
ABCD,ABDC,ACBD,ACDB,ADBC,ADCB,BACD,BADC,BCAD,BCDA,BDAC,BDCA,CABD,CADB,CBAD,CBDA,CDAB,CDBA,DABC,DACB,DBAC,DBCA,DCAB,DCBA,


Create a new paste based on this one


Comments: