#include <stdio.h> char conjunto[100]; void verifica_solucao (int size) { int i; int ja_imprimiu = 0; printf ("{"); for (i = 0; i < size; i++) if (ja_imprimiu) { printf (", %c", conjunto[i]); } else { printf ("%c", conjunto[i]); ja_imprimiu = 1; } printf ("}\n"); } void gera_solucao(int n, int size) { int tmp, i, k; if (n == 3) verifica_solucao(size); else { for (i = n; i < size; i++) { tmp = conjunto[i]; conjunto [i] = conjunto[n]; conjunto[n] = tmp; gera_solucao(n + 1, size); tmp = conjunto[i]; conjunto [i] = conjunto[n]; conjunto[n] = tmp; } } } int main (int argc, char *argv[]) { int i, size; printf("%s\n", argv[0]); printf("%d\n", argc); if(argc == 1) { conjunto[0] = '1'; conjunto[1] = '2'; conjunto[2] = '3'; size=3; } else { for(i=1; i<argc; i++) { conjunto[i-1] = argv[i][0]; } size=argc-1; } gera_solucao (0, size); return (0); }