HLFX.Ru Forum
Показать все 3 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Технические вопросы (https://hlfx.ru/forum/forumdisplay.php?forumid=20)
-- Алгоритм (https://hlfx.ru/forum/showthread.php?threadid=1954)


Отправлено BioHazard 10-09-2009 в 15:57:

Question Алгоритм

Доброго времени суток, форумчане!

Допустим у меня есть 10 переменных типа A B C D E F G H I J
Возникла надобность написать прогу, которая составляла бы все возможные парные сочетания этих переменных типа A-E, B-F итп.
и разделяла бы их на таблицы, в каждой из которых 5 пар.

Условия:


  1. в каждой табличке должны задействоваться все переменные.
  2. Переменные повторяться не должны
  3. Во всем генеральном списке может существовать только один тип пары, например B-J, но J-B уже не может.


Собственно вся сложность и заключается в алгоритме подбора..


Отправлено XaeroX 10-09-2009 в 17:05:

Делаем последовательное заполнение табличек по 5 пар, беря буквы слева направо. Сначала берем буквы подряд, потом через 1, через 2 и т.п. Перед тем, как увеличить отступ, делаем проходы со смещением, количество которых равно (отступ+1). Как только величина отступа достигает 9 (т.е. максимум букв - 1), берем первую и последнюю буквы и прерываем расчет.

C++ Source Code:
1
буквы[10] = { A B C D E F G H I J }
2
отступ = 1
3
 
4
while (1)
5
{
6
  if (отступ == 9)
7
  {
8
    таблица.добавляем(буквы[0], буквы[9]);
9
    break;
10
  }
11
 
12
  for (проход = 0; проход < отступ+1; проход++)
13
  {
14
    for (индекс = 0; индекс < 10;)
15
    {
16
      if (индекс+проход+отступ >= 10)
17
        break;
18
 
19
      таблица.добавляем(буквы[индекс+проход], буквы[индекс+проход+отступ]);
20
      if (таблица.количествопар == 5)
21
        таблица = новая таблица;
22
      индекс += отступ+1;
23
    }
24
  }
25
  отступ++;
26
}

__________________

xaerox on Vivino


Отправлено BioHazard 10-09-2009 в 17:37:

Спс!!!


Временная зона GMT. Текущее время 12:13.
Показать все 3 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024