void pailie(int k,int n,char a[])
{   
	int i,j;
	char temp;
	if (k>n) 
	{
	for(i=1;i<=n;i++)
	printf("%c",a[i]);
	printf("\n");
	}
    else
	{
		for(i=k;i<=n;i++)
		
		{   if(i>k){
			temp=a[i];
			for(j=i;j>=k+1;j--)
				a[j]=a[j-1];
			a[k]=temp;
		}
			pailie(k+1,n,a);
			if(i>k)  
			{ temp=a[k];
			for(j=k;j<=i-1;j++)
				a[j]=a[j+1];
			a[i]=temp;
		}
		}
		
	
		
	}
}
Ejemplo n.º 2
0
int main()
{
    //freopen("/home/lintingbin/test.txt", "r", stdin);
    char str[N];
    int len;

    while (scanf("%s", str) != EOF)
    {
        memset(used, 0, N*sizeof(int));
        len = strlen(str);
        result[len] = '\0';
        sort(str, len);
        pailie(str, len, 0);
    }
    return 0;
}
int main()
{
	char a[255]={0};
	int n,i;
while(scanf("%d",&n)+1)
{
	for(i=1;i<=n;i++)
	{
		getchar();
		scanf("%c",&a[i]);
	}
	sort(a,n);
    pailie(1,n,a);
printf("\n");   
}
return 0;
}
Ejemplo n.º 4
0
void pailie(char *str, int len, int index)
{
    int i, j, repeat[N] = {0};

    if (index == len)
        printf("%s\n", result);
    for (i = 0; i < len; i++)
    {
        if (used[i] == 1)
            continue;
        result[index] = str[i];
        if (isRepeat(repeat, i, str[i]))
            continue;
        repeat[i] = str[i];
        used[i] = 1;
        pailie(str, len, index+1);
        used[i] = 0;
    }
}