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

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

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

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

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

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

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

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

9
Падаван С++
447 / 261 / 89
Регистрация: 11.11.2014
Сообщений: 916
02.04.2017, 17:39 2
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  [ТС] 3
это нужно вызвать функцию math получается?я просто пока мало знаком с языком,только начал изучение
0
Падаван С++
447 / 261 / 89
Регистрация: 11.11.2014
Сообщений: 916
02.04.2017, 17:42 4
asdfre, в вашем случае n = 4 и m = 4 и по сути задача сводится к нахождению факториала, на форуме есть много тем по поводу этого

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

Добавлено через 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
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
02.04.2017, 18:41 6
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
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
02.04.2017, 18:42 7
asdfre, Вам нужно получить количество перестановок? Тогда да, надо считать факториал. 4! = 24
Или вам нужно генерировать все 24 перестановки? Получить 24 строки типа ABCD, ABDC, ACBD, ... DCBA ?
Тогда поищите "Генерация перестановок" Было на форуме, было...
Цитата Сообщение от asdfre Посмотреть сообщение
все основные действия выполняет sort?
Действий вообще тут никаких нет.
0
1 / 1 / 1
Регистрация: 01.03.2017
Сообщений: 26
02.04.2017, 18:57  [ТС] 8
нужно сгенерировать все 24 перестановки ABCD
Хорошо спасибо поищу еще
0
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
02.04.2017, 19:55 9
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  [ТС] 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
03.04.2017, 00:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.04.2017, 00:10
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru