Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.95/19: Рейтинг темы: голосов - 19, средняя оценка - 4.95
k_ehgor
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 4
1

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

19.06.2013, 17:17. Просмотров 3584. Ответов 6
Метки нет (Все метки)

Дана строка, состоящая из M попарно различных символов. Вывести все перестановки символов данной строки.
Ввод
В первой строке файла находится исходная строка.
Вывод
Вывести в каждой строке файла по одной перестановке. Перестановки можно выводить в любом порядке. Повторений и строк, не являющихся перестановками исходной, быть не должно.
Ограничения
2 ≤ M ≤ 8; символы - буквы латинского алфавита и цифры.
Пример:
Ввод: 123
Вывод: 321
213
132
312
231
123
Именно в таком порядке!!!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.06.2013, 17:17
Ответы с готовыми решениями:

Дана строка символов, состоящая из букв и цифр. Удалить из строки все цифры
Нужна прога... Дана строка символов, состоящая из букв и цифр. Удалить из...

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

Дана строка символов, состоящая из цифр, разделенных пробелами. Вывести четные числа этой строки- не работает
#include <vcl.h> #pragma hdrstop #include <conio.h> #include <iostream.h>...

Дана строка символов, состоящая из цифр, разделенных пробелами. Вывести на экран числа этой строки в порядке возрастан
При вводе чисел к примеру 5 3 2 1 , выдает непонятные цифры 3251325032490...

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

6
MrGluck
Модератор
Эксперт CЭксперт С++
8087 / 4940 / 1431
Регистрация: 29.11.2010
Сообщений: 13,398
19.06.2013, 17:22 2
Цитата Сообщение от k_ehgor Посмотреть сообщение
Перестановки можно выводить в любом порядке.
Цитата Сообщение от k_ehgor Посмотреть сообщение
Именно в таком порядке!!!!!
???
0
dr.curse
393 / 349 / 36
Регистрация: 11.10.2010
Сообщений: 1,907
19.06.2013, 17:22 3
не проверял
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <string>
#include <algorithm>
int main()
{
    std::string s;
    std::cin >> s;
    std::sort(s.begin(),s.end());
    do{
        std::cout << s << std::endl;
    }while (std::next_permutation(s.begin(),s.end()))
    return 0;
}
1
k_ehgor
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 4
19.06.2013, 17:26  [ТС] 4
MrGluck, в задании сказано любым, а в примере именно так((
0
dr.curse
393 / 349 / 36
Регистрация: 11.10.2010
Сообщений: 1,907
19.06.2013, 17:28 5
Цитата Сообщение от k_ehgor Посмотреть сообщение
MrGluck, в задании сказано любым, а в примере именно так((
k_ehgor, вообще-то нужно решать так как сказано в задании, пример не важен, поскольку как я понимаю это олимпиадная задача
0
k_ehgor
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 4
19.06.2013, 17:29  [ТС] 6
Спасибки
0
MrGluck
Модератор
Эксперт CЭксперт С++
8087 / 4940 / 1431
Регистрация: 29.11.2010
Сообщений: 13,398
19.06.2013, 17:48 7
k_ehgor, тогда так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <clocale>
#include <algorithm>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "");
    const int N = 4;
    int A[N]; // имеем множество A {1, ... N}
    int counter = 0; // счетчик числа перестановок
    for (int i = 0; i < N; i++) // заполняем множество
        A[i] = i + 1;
    // sort(A, A + N); // необходимо при вводе произвольных элементов
    do
    {
        for (int i=0; i < N; i++)
            cout << A[i] << ' ';
        cout << endl;
        counter++;
    } while (next_permutation(A, A + N));
    cout << "Всего перестановок: " << counter << endl;
    return 0;
}
Второй вариант без STL:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <iostream>
#include <clocale>
 
using namespace std;
 
// вывод множества на экран
void print(const int *A, const int size);
// функция перестановки двух чисел
void swap(int &, int &);
// функция генерации следующей перестановки
void next_perm(int k, int *A, const int size, int &counter);
 
 
int main()
{
    setlocale(LC_ALL, "");
    const int N = 4;
    int A[N]; // имеем множество A {1, ... N}
    int counter = 0; // счетчик числа перестановок
    for (int i = 0; i < N; i++) // заполняем множество
        A[i] = i + 1;
    next_perm(0, A, N, counter);
    cout << "Всего перестановок: " << counter << endl;
    return 0;
}
 
void print(const int *A, const int size)
{
    for (int i=0; i < size; i++)
        cout << A[i] << ' ';
    cout << endl;
}
 
void swap(int &x, int &y)
{
    int tmp = x;
    x = y;
    y = tmp;
}
 
void next_perm(int k, int *A, const int size, int &counter)
{
    // если заполнилось
    if (k == size)
    {
        print(A, size);
        counter++;
        return;
    }
 
    for(int i = k; i < size; i++)
    {
        swap(A[k], A[i]);
        next_perm(k + 1, A, size, counter); // следующая перестановка
        swap(A[k], A[i]);
    }
}
1
19.06.2013, 17:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.06.2013, 17:48

Дана строка символов. Удалить из данной строки все группы букв вида asdf
На выходе такая же строка, как и на входе. //Дана строка символов...

Дана строка символов, состоящая из цифр и пробелов. Вывести на экран слово с максимальной длиной
Помогите, выдает ошибку в проверке условия цикла #include &lt;conio.h&gt;...

Дана строка, состоящая из групп нулей и единиц. Найти и вывести на экран группы с четным количеством символов
Помогите с решение задачи на Macrosoft Visual C++ Дана строка, состоящая из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru