Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string>
- #include <vector>
- int factorial(int n)
- {
- for(int i = n-1; i > 1; --i)
- n *= i;
- return n;
- }
- std::vector<std::string> permutar2(const std::string& text)
- {
- std::vector<std::string> permut;
- int factorialLength = factorial(text.length());
- int factorialLength1 = factorial(text.length()-1);
- permut.resize(factorialLength);
- if(text.length() == 2) {
- permut.resize(factorialLength);
- for(int i = 0; i < factorialLength; ++i)
- for(int j = 0; j < text.length(); ++j)
- permut[i] += text[(i+j) % text.length()];
- }
- else {
- for(int i = 0; i < factorialLength; i+=factorialLength1) {
- char letter = text[(i/factorialLength1) % text.length()];
- for(int j = 0; j < factorialLength1; ++j)
- permut[i+j] += letter;
- std::string ntext;
- for(int j = 0; j < text.length(); ++j) {
- if(text[j] != letter)
- ntext += text[j];
- }
- std::vector<std::string> permut2 = permutar2(ntext);
- for(int j = 0; j < permut2.size(); ++j)
- permut[i+j] += permut2[j];
- }
- }
- return permut;
- }
- int main()
- {
- std::string text = "abcd";
- std::vector<std::string> permut = permutar2(text);
- for(int i = 0; i < permut.size(); ++i)
- printf("%s\n", permut[i].c_str());
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement