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

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

Восстановить пароль Регистрация
 
parkourtrane
0 / 0 / 0
Регистрация: 29.09.2013
Сообщений: 4
16.01.2014, 13:02     Комбинации #1
Здраствуйте форумчани. Столкнулся с проблемой что немогу решить головоломку. Допустим у нас есть строка символ 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++ Комбинации с монеток
C++ Комбинации
Комбинации отобразить в целое C++
C++ Все возможные комбинации из 4 цифр
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
16.01.2014, 13:05     Комбинации #2
да по идее тоже самое, просто надо сравнить символы и если А==А то не менять их местами
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
16.01.2014, 13:07     Комбинации #3
std::next_permutation
zss
Модератор
Эксперт С++
 Аватар для zss
5950 / 5555 / 1786
Регистрация: 18.12.2011
Сообщений: 14,195
Завершенные тесты: 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     Комбинации
Ответ Создать тему
Опции темы

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