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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.71
zago-vlad
13 / 8 / 1
Регистрация: 12.01.2010
Сообщений: 106
#1

Все возможные комбнинации элементов массива - C++

03.12.2011, 19:31. Просмотров 2064. Ответов 4
Метки нет (Все метки)

Всем привет!

Есть массив char array[s] (s - размер массива).
Нужно написать прогу, которая выведет все возможные КОМБИНАЦИИ элементов этого массива и выведет результат на экран. Например, если в массиве строка abc то прога должна вывести что-то такое:

ab
ac
bc
abc

Изменение порядка не считается комбинацией (например, ab и ba считаются идентичными).

Заранее ОГРОМНОЕ спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2011, 19:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Все возможные комбнинации элементов массива (C++):

Все возможные суммы элементов массива - C++
Нужно сформировать все возможные суммы массива размерностью N Для массива 1 3 5 Результат 4 6 8 9 То есть рассматриваем все возможные...

Все возможные перестановки элементов заданного массива - C++
Помогите вывести на консоль все возможные перестановки элементов заданного массива void printPermutations (int items , int itemsLength) {...

Рекурсия: вывести все возможные размещения элементов массива - C++
Дан массив char mas = { a, b, c, d, e, f, g, h, j, k }. Вывести на экран все возможные комбинации букв ( каждая комбинация = 10 символов )

Вывести все возможные расположения двух единиц в массиве из четырех элементов - C++
Функция, выводящая все возможные расположения двух единиц в массиве из четырех элементов, то есть 1100, 1010, 0011 и тд.

Разработать функцию, генерирующую все возможные наборы значений n логических переменных в виде массива целых 0 - C++
Разработать функцию, генерирующую все возможные наборы значений n логических переменных в виде массива целых 0 или 1. Например, для n = 3...

Дан одномерный массив А, состоящий из N элементов. Перенести в начало массива все четные элементы, а в конец массива - все нечетные - C++
Помогите, пожалуйста. >>"Дан одномерный массив А, состоящий из N элементов. Перенести в начало массива все четные элементы, а в конец...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
n00b.vcxproj
Кодер
47 / 46 / 2
Регистрация: 10.10.2010
Сообщений: 229
03.12.2011, 19:42 #2
циклом.
C++
1
2
3
4
for(int i=0;i<s;i++)
for(int j=1;j<s;j++)
if(j!=i)
printf("%c%c\n",array[i],array[j]);
будет выводить от ab до ba, если это безразлично, то так.
если нет, то надо копаться.
zago-vlad
13 / 8 / 1
Регистрация: 12.01.2010
Сообщений: 106
03.12.2011, 21:03  [ТС] #3
Цитата Сообщение от n00b.vcxproj Посмотреть сообщение
то надо копаться
Я думаю, что в данном случае надо создать массив с номерами уже использованных комбинаций и при каждом выполнении цикла проверять, нет ли текущей комбинации в этом массиве

Добавлено через 49 минут
n00b.vcxproj, твой код выводит только комбинации, состоящие из двух чисел. Например, если массив из 4-х элементов (a,b,c,d), то вывод должен быть похожим на такое:
ab
bc
abc
dbc
abcd
и т.д.

А втоя прога выводит такое:
ab
ac
ad
bc
bd
cd

Ладно, я уже написал своё решение, которое выводит все возможные комбинации элементов массива:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int i = 0;
while(i < s)
    {
            int k = i;
            while(k < s) {
            int j = k;
            while(j <= s) {
                    if((j - k) > 1) {
                    cout << array[i] << " ";
                    int u = 1;
                    int r = j - k;
                    while(u < r) {
                            cout << array[k+u] << " ";
                            u++;
                    }
                    cout << "\n";
                    }
                    j++;
            }
            k++;
            }
            i++;
    }
BohdanSavych
1 / 1 / 0
Регистрация: 25.12.2013
Сообщений: 44
01.04.2015, 20:25 #4
Цитата Сообщение от zago-vlad Посмотреть сообщение
int i = 0;
while(i < s)
* * {
* * * * * * int k = i;
* * * * * * while(k < s) {
* * * * * * int j = k;
* * * * * * while(j <= s) {
* * * * * * * * * * if((j - k) > 1) {
* * * * * * * * * * cout << array[i] << " ";
* * * * * * * * * * int u = 1;
* * * * * * * * * * int r = j - k;
* * * * * * * * * * while(u < r) {
* * * * * * * * * * * * * * cout << array[k+u] << " ";
* * * * * * * * * * * * * * u++;
* * * * * * * * * * }
* * * * * * * * * * cout << "\n";
* * * * * * * * * * }
* * * * * * * * * * j++;
* * * * * * }
* * * * * * k++;
* * * * * * }
* * * * * * i++;
* * }
Код неверный.Протестировал,чем больше елементов для комбинацый -тем больше комбинаций теряеться.
Байт
Эксперт C
15986 / 10254 / 1536
Регистрация: 24.12.2010
Сообщений: 19,342
01.04.2015, 21:00 #5
zago-vlad, Это называется "Генерация сочетаний". На форуме алгоритмов - без счета. Просто тебе (после того как найдешь алгоритм) надо будет просто пробежаться циклом от 1 до n
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2015, 21:00
Привет! Вот еще темы с ответами:

Дан одномерный массив А, состоящий из N элементов. Перенести в начало массива все четные элементы, а в конец массива - все нечетные - C++
Помогите, пожалуйста. &gt;&gt;&quot;Дан одномерный массив А, состоящий из N элементов. Сколько значений элементов встречается в массиве по 3...

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

Из вещественного массива X удалить все числа, превышающие среднее арифметическое элементов массива - C++
Из вещественного массива X удалить все числа, превышающие среднее арифметическое элементов массива. Напишите пожалуйста полностью...

Все возможные комбинации из 4 цифр - C++
Доброго времени суток! Прошу помочь с такой задачей: Пользователь вводит 4-х разрядное число. Вывести все возможные 4-х разрядные...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
01.04.2015, 21:00
Ответ Создать тему
Опции темы

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