void allLexicographicRecur (char *str, char* data, int last, int index) { int i, len = strlen(str);
// One by one fix all characters at the given index and recur for the // subsequent indexes for ( i=0; i<len; i++ ) { // Fix the ith character at index and if this is not the last index // then recursively call for higher indexes data[index] = str[i] ; // If this is the last index then print the string stored in data[] if (index == last) printf("%s\n", data); else // Recur for higher indexes allLexicographicRecur (str, data, last, index+1); } } /* This function sorts input string, allocate memory for data (needed for allLexicographicRecur()) and calls allLexicographicRecur() for printing all permutations */ void allLexicographic(char *str) { int len = strlen (str) ; // Create a temp array that will be used by allLexicographicRecur() char *data = (char *) malloc (sizeof(char) * (len + 1)) ; data[len] = '\0'; // Sort the input string so that we get all output strings in // lexicographically sorted order qsort(str, len, sizeof(char), compare); // Now print all permutaions allLexicographicRecur (str, data, len-1, 0); // Free data to avoid memory leak free(data); } // Needed for library function qsort() int compare (const void * a, const void * b) { return ( *(char *)a - *(char *)b ); } // Driver program to test above functions int main() { char str[] = "ABC"; printf("All permutations with repetition of %s are: \n", str); allLexicographic(str); getchar(); return 0; } -- You received this message because you are subscribed to the Google Groups "Algorithm Geeks" group. To post to this group, send email to algogeeks@googlegroups.com. To unsubscribe from this group, send email to algogeeks+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/algogeeks?hl=en.