Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/55: Рейтинг темы: голосов - 55, средняя оценка - 4.53
1 / 1 / 1
Регистрация: 01.03.2017
Сообщений: 26

Найти все возможные комбинации четырех букв

02.04.2017, 17:30. Показов 11927. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть задача с 4 буквами.A,B,C,D нужно найти все возможные комбинации этих букв.
Комбинации если я не путаю не чего считаются так А=1*2*3*4=24
Вот только как реализовать это на языке с++ не знаю.так как только начал его изучение.
Буду признателен за подсказку или решение.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.04.2017, 17:30
Ответы с готовыми решениями:

Найти все возможные комбинации по номеру карты
Все привет!!! Выручайте с этим кодом уже вожусь почти неделю и не могу с ним нечего сделать #include "stdafx.h" #include...

Все возможные комбинации длины k из 0 и 1
Как бы это реализовать? Подкиньте идей или может есть готовая у кого-то. Ввод k:3 Вывод: 0 0 1 0 1 0 1 0 0 1 1 0 0 1 1 и...

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

9
Падаван С++
 Аватар для obivan
447 / 261 / 89
Регистрация: 11.11.2014
Сообщений: 916
02.04.2017, 17:39
asdfre, реализовать формулу размещения

Anm = https://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{n!}{(n-m)!}
0
1 / 1 / 1
Регистрация: 01.03.2017
Сообщений: 26
02.04.2017, 17:40  [ТС]
это нужно вызвать функцию math получается?я просто пока мало знаком с языком,только начал изучение
0
Падаван С++
 Аватар для obivan
447 / 261 / 89
Регистрация: 11.11.2014
Сообщений: 916
02.04.2017, 17:42
asdfre, в вашем случае n = 4 и m = 4 и по сути задача сводится к нахождению факториала, на форуме есть много тем по поводу этого

Добавлено через 58 секунд
asdfre,
Цитата Сообщение от asdfre Посмотреть сообщение
это нужно вызвать функцию math получается
нет стандартной функции вычисления факториала нет, ее нужно самому реализовать, или реализовать функцию этой формулы
0
1 / 1 / 1
Регистрация: 01.03.2017
Сообщений: 26
02.04.2017, 18:31  [ТС]
спасибо попробую разобраться)

Добавлено через 24 минуты
Нашел решение.
Переделал его под себя
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// next_permutation example
#include <iostream>     // std::cout
#include <algorithm>    // std::next_permutation, std::sort
using namespace std;
int main () {
  char myints[] = {'A','B','S','D'};
 
  sort (myints,myints+4);
 
  
  do {
    cout << myints[0] << ' ' << myints[1] << ' ' << myints[2] << ' ' << myints[3]<< '\n';
  } while ( std::next_permutation(myints,myints+4) );
 
}
Подскажите я правильно понимаю что тут все основные действия выполняет sort?
1
1719 / 568 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
02.04.2017, 18:41
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "stdafx.h"
#include <iostream>
#include <string>
#include <algorithm>
 
int main() {
 
    std::string str = "ABCD";
    do
        std::cout << str << std::endl;
    while (std::next_permutation(str.begin(), str.end()));
    system("pause");
}
sort располагает в порядке возрастания (если не принципиально можно убрать).
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
02.04.2017, 18:42
asdfre, Вам нужно получить количество перестановок? Тогда да, надо считать факториал. 4! = 24
Или вам нужно генерировать все 24 перестановки? Получить 24 строки типа ABCD, ABDC, ACBD, ... DCBA ?
Тогда поищите "Генерация перестановок" Было на форуме, было...
Цитата Сообщение от asdfre Посмотреть сообщение
все основные действия выполняет sort?
Действий вообще тут никаких нет.
0
1 / 1 / 1
Регистрация: 01.03.2017
Сообщений: 26
02.04.2017, 18:57  [ТС]
нужно сгенерировать все 24 перестановки ABCD
Хорошо спасибо поищу еще
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
02.04.2017, 19:55
asdfre, Вам в посте 6 уже дали вполне рабочий вариант. Но он использует метод класса string - next_permutation, который именно и дает следующую перестановку, пока все они не исчерпаются. А вам нужно все сделать все в стиле чистого Си?

Добавлено через 43 минуты
asdfre, вот, покопался по сусекам
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
#include <stdio.h>
#define N 4
 
main()
{ char s[N+1], t; int i, j, r, k;
 
 strcpy(s, "ABCD");
 while(1) {
   cout <<  s << endl;
       // Находим самое правое место, где s[i] < s[i+1]
   for(i=N-1; i>=0 && s[i] > s[i+1]; i--) ;
   if (i<0) break; // Уже получили "DCBA" - самую старшую перестановку
       // Находим s[j] - наименьший элемент справа от s[i] и больший его
   for(j=N-1; s[i] > s[j]; j--) ;
       // Меняем s[i] <-> s[j]
   t = s[j];
   s[j] = s[i];
   s[i] = t;
       // То, что за "i" - переворачиваем
   for(k=i+1, r=N-1; r > k; k++, r--) {
     t = s[r];
     s[r] = s[k];
     s[k] = t;
   }
 }
}
0
1 / 1 / 1
Регистрация: 01.03.2017
Сообщений: 26
03.04.2017, 00:10  [ТС]
Цитата Сообщение от Байт Посмотреть сообщение
asdfre, Вам в посте 6 уже дали вполне рабочий вариант. Но он использует метод класса string - next_permutation, который именно и дает следующую перестановку, пока все они не исчерпаются. А вам нужно все сделать все в стиле чистого Си?

Добавлено через 43 минуты
asdfre, вот, покопался по сусекам
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
#include <stdio.h>
#define N 4
 
main()
{ char s[N+1], t; int i, j, r, k;
 
 strcpy(s, "ABCD");
 while(1) {
   cout <<  s << endl;
       // Находим самое правое место, где s[i] < s[i+1]
   for(i=N-1; i>=0 && s[i] > s[i+1]; i--) ;
   if (i<0) break; // Уже получили "DCBA" - самую старшую перестановку
       // Находим s[j] - наименьший элемент справа от s[i] и больший его
   for(j=N-1; s[i] > s[j]; j--) ;
       // Меняем s[i] <-> s[j]
   t = s[j];
   s[j] = s[i];
   s[i] = t;
       // То, что за "i" - переворачиваем
   for(k=i+1, r=N-1; r > k; k++, r--) {
     t = s[r];
     s[r] = s[k];
     s[k] = t;
   }
 }
}
Спасибо!

Добавлено через 3 минуты
извиняюсь за оффтоп,
но пользуюсь случаем,хотел бы спросить,насколько хороша данная книга "Алгоритмы Руководство по разработке. Стивен Скиена" Для общего понимания работы алгоритмов?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.04.2017, 00:10
Помогаю со студенческими работами здесь

Все возможные комбинации из 10 цифр по n
есть 10 цифр, нужно написать программу, где вводишь n-кол-во чисел в последовательности, а потом программа перебирает все возможные...

Все возможные комбинации 5 чисел
В общем задача такая: Нужно, чтобы программа выдавала все возможные комбнации 5 чисел: 1 число от 1 до 32 2 число от 2 до 33, но...

Перебрать все возможные комбинации цифр
Помогите написать код, котрый будет выводить все числа, например, в троичной системе. Т. е. Нам даны числа 0,1,2. Нужно вывести 0 1 2...

Вывести все возможные комбинации размещения 6 объектов
Вывести все возможные комбинации размещения 6 объектов (1,2,3,4,5,6) по двум инстанциям, где один и тот же объект не может направляться в...

Вывести все возможные комбинации цепочек в матрице смежности
Есть матрица смежности вида: AB0 BCD DD0 CKN NE0 KB0 Т.е. если в конце строки 0, то из одного узла есть связь только к одному...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru