Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.76
k_ehgor
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 4
#1

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

19.06.2013, 17:17. Просмотров 2793. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Дана строка, состоящая из M попарно различных символов. Вывести все перестановки символов данной строки. (C++):

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

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

Дана строка символов, состоящая из цифр, разделенных пробелами. Вывести четные числа этой строки- не работает - C++
#include <vcl.h> #pragma hdrstop #include <conio.h> #include <iostream.h> #include <string.h> void main() { int n,i; ...

Дана строка символов, состоящая из цифр и пробелов. Вывести на экран слово с максимальной длиной - C++
Помогите, выдает ошибку в проверке условия цикла #include <conio.h> #include <stdio.h> #include <string.h> int main() { ...

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

Дана строка. Подсчитать, сколько различных символов встречается в ней. Вывести их на экран. - C++
Помогите решить задачи: 1. Найти все простые натуральные числа, не превосходящие n, двоичная запись которых представляет собой палиндром,...

6
MrGluck
Модератор
Эксперт CЭксперт С++
7496 / 4611 / 694
Регистрация: 29.11.2010
Сообщений: 12,621
19.06.2013, 17:22 #2
Цитата Сообщение от k_ehgor Посмотреть сообщение
Перестановки можно выводить в любом порядке.
Цитата Сообщение от k_ehgor Посмотреть сообщение
Именно в таком порядке!!!!!
???
0
dr.curse
389 / 345 / 16
Регистрация: 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
389 / 345 / 16
Регистрация: 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Эксперт С++
7496 / 4611 / 694
Регистрация: 29.11.2010
Сообщений: 12,621
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
Привет! Вот еще темы с ответами:

Дана строка символов,состоящая из произвольного текста - C++
помогите пожалуйста с задачей(С++) Дана строка символов ,состоящая из произвольного текста,слова разделены пробелами.вывести на экран...

Дана строка символов, состоящая из произвольного текста, слова раз-делены пробелами. Вывести на экран порядковый номер слова, накрывающего k позицию - C++
Помогите с вот такой вот задачкой: Дана строка символов, состоящая из произвольного текста, слова раз- делены пробелами. Вывести на...

Дана строка символов, состоящая из произвольного текста, слова разделены пробелами - C++
Дана строка символов, состоящая из произвольного текста, слова разделены пробелами. Вывести на экран порядковый номер слова ...

Дана строка символов, состоящая из букв, цифр, запятых, точек, знаков «+» и «–». Выделить подстроку, которая соответствует записи вещественного числа - C++
Дана строка символов, состоящая из букв, цифр, запятых, точек, знаков «+» и «–». Выделить подстроку, которая соответствует записи...


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

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

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