Задача такая возникла... очень долго работает программа, на несколько суток растянется проверка.
Нет ли каких-то идей по оптимизации программы?
Программа проверяет построение примитивного квадрата из 32 пар комплементарных чисел.
Пары комплементарных чисел - это пары чисел с одинаковой суммой (называемой константой комплементарности).
Есть массив, состоящий из 218 пар комплементарных чисел.
Иными словами: массив состоит из двух равных частей A и B таких, что для каждого элемента m из А существует ровно один элемент n в В, что m+n=K.
Для проверки берутся все различные массивы (массивы считаются раличными, если они отличаются по крайней мере одной парой), состоящие ровно из 32 пар комплементарных чисел. Ну, или проверяется сразу весь массив полным перебором.
Понятно, что массивов из 32 чисел будет огромное количество.
И в любом случае проверка очень и очень длинная получается.
Один массив из 32 пар проверяется довольно быстро. Но если бы он был один или хотя бы штук 20-30. Но их будет... я даже не берусь сосчитать сколько.
Можно ли здесь применить многопоточное программирование?
(о котором только слышала, но применять его не умею)
Кто может помочь советом и/или делом
ПримерКод:
19 83 1019 1583 3229 3793 4729 4793
103 167 1103 1667 3313 3877 4813 4877
499 563 1499 2063 3709 4273 5209 5273
523 587 1523 2087 3733 4297 5233 5297
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
S=24024
Это единственное известное мне решение данной задачи.
Здесь массив состоит из 195 пар комплементарных чисел.
Те элементы, которые здесь нули, это как раз элементы из соответствующей пары, то есть они однозначно определяются 32 найденными элементами квадрата.
Константа комплементарности здесь равна
6006.
S=24024 это индекс примитивного квадрата (S=4K).