// stephen k. hess // written sometime in may 2000 // i don't give a good goddamn what you do with this, as long as you don't take // credit for writing it #include #define WORD_SIZE 20 void unjumble(char *, char *, int); int main(int argc, char *argv[]) { int i; char *word = new char[WORD_SIZE]; char *word2 = new char[WORD_SIZE]; if (argc > 1) { strcpy(word, argv[1]); } else { cin >> word; } strcpy(word2, ""); unjumble(word2, word, 0); delete[] word; delete[] word2; word = NULL; word2 = NULL; return 0; } void unjumble(char *original, char *whatsleft, int iteration) { char *otherpart = new char[WORD_SIZE]; int i, j, k; int whatsleftlen = strlen(whatsleft); if (whatsleftlen == 0) { cout << original << endl; } else { for (i = 0; i < whatsleftlen; i++) { original[iteration] = whatsleft[i]; strcpy(otherpart, ""); for (j = 0, k = 0; j < whatsleftlen; j++) if (i != j) otherpart[k++] = whatsleft[j]; unjumble(original, otherpart, iteration+1); } } delete[] otherpart; otherpart = NULL; }