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:
Алгоритм
Доброго времени суток, форумчане!
Допустим у меня есть 10 переменных типа A B C D E F G H I J
Возникла надобность написать прогу, которая составляла бы все возможные парные сочетания этих переменных типа A-E, B-F итп.
и разделяла бы их на таблицы, в каждой из которых 5 пар.
Условия:
- в каждой табличке должны задействоваться все переменные.
- Переменные повторяться не должны
- Во всем генеральном списке может существовать только один тип пары, например 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 } |
8 | таблица.добавляем(буквы[0], буквы[9]); |
12 | for (проход = 0; проход < отступ+1; проход++) |
14 | for (индекс = 0; индекс < 10;) |
16 | if (индекс+проход+отступ >= 10) |
19 | таблица.добавляем(буквы[индекс+проход], буквы[индекс+проход+отступ]); |
20 | if (таблица.количествопар == 5) |
21 | таблица = новая таблица; |
__________________
Отправлено BioHazard 10-09-2009 в 17:37:
Спс!!! 