Форум программистов, компьютерный форум, киберфорум
Наши страницы
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.51/49: Рейтинг темы: голосов - 49, средняя оценка - 4.51
QuadroX
21 / 21 / 2
Регистрация: 14.10.2009
Сообщений: 202
1

Алгоритм перебора всех сочетаний

06.04.2010, 13:26. Просмотров 9856. Ответов 4
Метки нет (Все метки)

Помогите. Необходимо перебрать все сочетания из N предметов по K. В моей задаче N вводится, а K = 3 постоянно. То есть немного упрощается. Нужен алгоритм перебора всех сочетаний из N предметов по 3. Как это реализовать?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.04.2010, 13:26
Ответы с готовыми решениями:

Алгоритм генерации сочетаний
Добрый день, помогите пожалуйста с решением данной задачи: Напишите программу для решения задачи...

Записать в выходной файл количество появлений всех двухбуквенных сочетаний, имеющихся в тексте
Друзья, пожалуйста, проверьте код. Он не рабочий к сожалению( Сама задача:Дан текст на русском...

Используя рекурсивные процедуры для перебора всех вершин дерева,определить количество чётных пометок
На рис. 1 изображено дерево с пятнадцатью вершинами 1,2,3, … 14, 15. Корнем дерева служит точка 1....

Алгоритм перебора всех возможных значений
Здравствуйте, суть задачи алгоритма состоит в поиске всех возможных сочетаний букв в слове....

Нужен алгоритм перебора всех вариантов кодового замка
Не могу найти такой алгоритм в гугле и не могу придумать сам. Помогите!! Есть кодовый замок такого...

4
Puporev
Модератор
57222 / 43671 / 30175
Регистрация: 18.05.2008
Сообщений: 104,117
06.04.2010, 15:35 2
Поскольку всего три, то можно простым перебором в три цикла
Pascal
1
2
3
for i:=1 to n
for j:=1 to n 
for k:=1 to n
1
QuadroX
21 / 21 / 2
Регистрация: 14.10.2009
Сообщений: 202
06.04.2010, 18:39  [ТС] 3
Спасибо, а можно немного подробнее? Вот у нас есть массив из N элементов. Нам нужно сделать сочетания по 3 элемента и вывести их все. Например для N = 4 первое сочетание A[1] A[2] A[3]; второе A[1] A[2] A[4]; третье A[2] A[3] A[4]; четвертое A[1] A[3] A[4] и так далее. Думаю идею донес основную. =) В результате на экране например такое:

23 76 12
76 12 23
...........
0
Puporev
Модератор
57222 / 43671 / 30175
Регистрация: 18.05.2008
Сообщений: 104,117
06.04.2010, 19:04 4
Pascal
1
2
3
4
for i:=1 to n do
for j:=1 to n do
for k:=1 to n do
writeln(a[i],' ',a[j],' ',a[k]);
0
WoodHead
102 / 101 / 29
Регистрация: 15.01.2011
Сообщений: 481
10.02.2013, 14:10 5
Цитата Сообщение от Puporev Посмотреть сообщение
Pascal
1
2
3
4
for i:=1 to n do
for j:=1 to n do
for k:=1 to n do
writeln(a[i],' ',a[j],' ',a[k]);
Хоть и старая тема, но все-таки поправлю.
В этом примере сочетания будут повторяться, а значит задача решена неверно.
Правильно так
Delphi
1
2
3
4
for i:=1 to n-2 do
for j:=i+1 to n-1 do
for k:=j+1 to n do
writeln(a[i],' ',a[j],' ',a[k]);
Добавлено через 1 час 41 минуту
Нашел алгоритм в книге под авторством Липского В. "Комбинаторика для программистов".
Вот код, адаптированный для Delphi XE2:
Delphi
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
program Project1;
 
{$APPTYPE CONSOLE}
 
{$R *.res}
 
uses
  System.SysUtils,Windows;
var
  i,p,k,n,m: integer;
  A: array [1..100] of integer;
begin
  // включаем русский язык в надписях в окне
  SetConsoleCP(1251);
  SetConsoleOutPutCP(1251);
 
  writeln('Эта программа генерирует список k-элементных подмножеств из n-элементного множества.');
  writeln('Введите через пробел значения k и n (k < n) и нажмите Enter:');
  readln(k,n);
  writeln('Список подмножеств:');
 
  {генерация первого подмножества}
  for i := 1 to k do
    A[i]:=i;
 
  p:=k;
  while p>=1 do
  begin
    {вывод подмножества на экран}
    for m := 1 to k do
      write(A[m],' ');
      writeln;
 
    if A[k]=n then
      p:=p-1
    else
      p:=k;
 
    if p>=1 then
      for i := k downto p do
        A[i]:=A[p]+i-p+1;
  end;
 
  {задержка в конце выполнения, чтобы прочитать результат на экране}
  readln;
end.
1
10.02.2013, 14:10
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.02.2013, 14:10

Алгоритм полного перебора всех значений длинной от одного до N по словарю
Здраствуйте. Задача такая. Есть простой словарь, допустим &quot;ABC&quot;. Необходимо перебрать все значения...

Составьте алгоритм замены всех сочетаний "ку" в слове X на сочетание "аа"
Составьте алгоритм замены всех сочетаний &quot;ку&quot; в слове X на сочетание &quot;аа&quot;.

Алгоритм перебора
Помогите с алгоритмом перебора... Две отрезка целочисленной длины m и n лежат в поле s... Не...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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