Хотел попробовать свои силы в решении задачи олимпиадной, но ни получается понять саму суть решения. Подскажите, каким образом (методом) её решать?
Исходная ситуация В информационной базе «1С:Бухгалтерии» имеются проводки за некоторый период ведения учета. Каждая проводка содержит корреспонденцию двух счетов и сумму. Счета могут иметь субсчета первого порядка в виде: <код синтетического счета>[.<код субсчета>] . Проводки с отрицательными суммами («сторно») отсутствуют.
Требуется Разработать внешний отчет, в котором предлагается вариант разбиения всех счетов, представленных в проводках, на минимальное количество групп, каждая из которых содержит синтетические счета, которые не корреспондируют друг с другом ни в одной из проводок, имеющихся в информационной базе. При этом проводки, в которых корреспондируют одинаковые синтетические счета, а также проводки с нулевыми суммами учитывать не надо. Результат представить в виде отчета, форма которого приведена в примере.
Задача-то олимпиадная. То есть алгоритмическая.
Я бы решал так:
Создать ТЗ с 3 столбцами: ГруппаДт, ГруппаКт,Сумма.
Выгрузить туда все проводки.
Свернуть по группам дебета и кредита.
Создать новую тз с колонкой ГруппаДт и ГруппаКт и Сумма, но заполнять ее добавляя группу дебета и все возможные группы кредита с суммами (там где они в этой корреспонденции есть). То есть если в первой таблице число строк N то во второй должно быть N^2 с суммами там где они есть.
Дальше сворачиваем вторую ТЗ так-же как и первую и обходим ее, выводя в отчет группы Дт и Кт где сумма по строке нулевая.