#include #include #include #include #include #include #include #include #include using namespace std; class Permutations { public: int print; vector items; void GenPermutations(size_t index); }; void Permutations::GenPermutations(size_t index) { size_t i; string tmp; if (index == items.size()) { if (print) { cout << items[0]; for (i = 1; i < items.size(); i++) cout << " " << items[i]; cout << endl; } return; } for (i = index; i < items.size(); i++) { tmp = items[i]; /* Swap items[index] with items[i] */ items[i] = items[index]; items[index] = tmp; GenPermutations(index+1); tmp = items[i]; /* Swap back */ items[i] = items[index]; items[index] = tmp; } } int main(int argc, char **argv) { Permutations P; string s; P.print = 1; if (argc == 2) { s = argv[1]; if (s == "No" || s == "no") P.print = 0; } while (cin >> s) P.items.push_back(s); P.GenPermutations(0); }