Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <math.h>
- #include <ctype.h>
- #define MAX 17
- #define MAX_VETOR 100000
- int IntPow (int n)
- {
- int i , result;
- result = 1;
- for(i=0;i<=n;i++)
- {
- result = result * 2;
- }
- if(n == 0)
- return 1;
- else
- return result;
- }
- void aumenta(char * A )
- {
- while(*A != '\0')
- {
- *A = toupper(*A);
- A++;
- }
- }
- int comp(const void *P1, const void *P2){
- char *A = (char *)P1, *B = (char *)P2;
- return strcmp(A, B);
- }
- int main()
- {
- int k , j , n , i, aux, Axu, Axu2, Y, cont;
- char zuera[26],palavra[MAX] , comb[MAX_VETOR][MAX];
- scanf("%d" , &n);
- while(n--)
- {
- scanf("%s" , palavra);
- aumenta(palavra);
- for(i=0; i < 26; i++)
- zuera[i] = 0;
- aux = strlen(palavra);
- if(aux == 1)
- printf("%s" , palavra);
- else
- {
- for(i=0; i < aux && palavra[i] != '\0'; i++)
- zuera[ palavra[i] - 'A' ] = 1;
- aux = 0;
- for(i=0; i < 26; i++)
- if( zuera[i] == 1 )
- palavra[aux++] = i + 'A';
- palavra[aux] = '\0';
- Axu = Axu2 = 0;
- aux = strlen(palavra) - 1;
- Axu = IntPow(aux);
- Axu2 = strlen(palavra);
- for(i=1;i< Axu;i++)
- {
- Y = i;
- k = 0;
- for(cont=0;cont<Axu2;cont++)
- {
- if(Y % 2 == 1)
- comb[i][k++] = palavra[cont];
- Y = Y / 2;
- }
- comb[i][k] = '\0';
- }
- qsort( comb , Axu, sizeof(comb[0]), comp);
- for( i = 1; i < Axu; i++ ){
- if(i == Axu - 1)
- printf("%s", comb[i]);
- else
- printf("%s ", comb[i]);
- }
- }
- printf("\n");
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement