Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
parkourtrane
0 / 0 / 0
Регистрация: 29.09.2013
Сообщений: 4
#1

Комбинации - C++

16.01.2014, 13:02. Просмотров 249. Ответов 3
Метки нет (Все метки)

Здраствуйте форумчани. Столкнулся с проблемой что немогу решить головоломку. Допустим у нас есть строка символ AAB. В результате программа должна показать такой результат:
AAB
ABA
BAA
Подкиньте идею как это можно реализовать. Я уже написал программу которая показывает все возможные варианты если в строке символ все элементы уникальные - ABC.
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
char sym[3] = {'A','B','C'};
    int i[3] = {0,0,0};
 
    while (i[0] < 3)
    {
        i[1] = 0;
        while(i[1] < 3)
        {
            if(i[1] == i[0])
            {
             i[1]++;
             continue;
            }
            i[2] = 0;
            while (i[2] <  3)
            {
                if(i[2] == i[0] || i[2] == i[1])
                {
                i[2]++;
                continue;
                }
            cout << sym[i[0]] << sym[i[1]] << sym[i[2]] << endl; 
            i[2]++;
            }
        i[1]++;
        }
    i[0]++;
    }
Результат:
ABC
ACB
BAC
BCA
CAB
CBA
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.01.2014, 13:02     Комбинации
Посмотрите здесь:

C++ комбинации чисел
C++ возможные комбинации перестановки n чисел
C++ Комбинации с монеток
C++ Комбинации
Комбинации отобразить в целое C++
C++ Синтезировать нажатие комбинации клавиш
C++ Все возможные комбинации из 4 цифр
C++ Все комбинации чисел от 1 до 4
C++ Все возможные комбинации длины k из 0 и 1
Максимальное число из комбинации цифр C++
Поиск, числа и комбинации C++
Все возможные комбинации из 10 цифр по n C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,994
16.01.2014, 13:05     Комбинации #2
да по идее тоже самое, просто надо сравнить символы и если А==А то не менять их местами
DiffEreD
 Аватар для DiffEreD
1425 / 762 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
16.01.2014, 13:07     Комбинации #3
std::next_permutation
zss
Модератор
Эксперт С++
 Аватар для zss
6117 / 5720 / 1850
Регистрация: 18.12.2011
Сообщений: 14,623
Завершенные тесты: 1
16.01.2014, 13:16     Комбинации #4
А почему не подойдет такое
C++
1
2
3
4
5
6
7
8
9
char res[N];
for(int i=0;i<N;i++)
{
   for(int j=i+1;i<N-1;i++)
            res[j]=sym[j-1]; // сдвигаем на 1 вправо
   res[i]=sym[N-1]; // вставляем сдвигаемый символ
   for(int j=0;i<i-1;i++)
            res[j]=sym[j]; // начало строки не поменялось
}
Yandex
Объявления
16.01.2014, 13:16     Комбинации
Ответ Создать тему
Опции темы

Текущее время: 17:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru