Решение задачи Перестановки с Меньшиков

Без пояснения   Просмотров: 43


Дана строка, состоящая из M попарно различных символов. Вывести все перестановки символов данной строки.


Код

#include <iostream>
#include <string>
#include <vector>
 
using namespace std;
 
string str;
vector<bool> used;
string curPermutation;
int n;
 
void input()
{
    cin>>str;
    n = str.size();
    used = vector<bool>(n,false);
    curPermutation = string(n,'*');
}
void output()
{
    // printf[0.01 с] / cout[0.16 с]
    cout<<curPermutation<<endl;
}
void rec(int pos)
{
    if (pos == n)
        output();
    for (int i=0;i<n;i++)
        if (!used[i])
        {
            curPermutation[pos] = str[i];
            used[i] = true;
            rec(pos+1);
            used[i] = false;
            curPermutation[pos] = '*'; // [for Debug only]     
        }
}
int main()
{
    input();
    rec(0);
    return 0;
}

         

Администратор Photo Автор: Администратор



Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться