|
От: |
ILva_
|
|
| Дата: | 09.03.07 10:36 |
|
Оценка: |
|
Здравствуйте, Piero2, Вы писали:
P>Делается полный перебор по 4-х мерному массиву — выполняется очень долго, а нужно быстрее
P> // Начинаем перебор
P> for(i1=0;i1<=2*CellsNum;i1++)
P> {tx = i1;
P> for(i2=0;i2<=2*CellsNum;i2++)
P> {ty = i2;
P> for(i3=-Vg;i3<=Vg;i3++)
P> {x = tx + i3*kof;
P> for(i4=-Vg;i4<=Vg;i4++)
P> {y = ty + i4*kof;
P> Q1[i1][i2][i3+Vg][i4+Vg].dh += cl[x][y].h;
P> if (Q1[i1][i2][i3][i4].dh<MinH)
P> { // Сохраняем лучший вариант
P> MinH = Q1[i1][i2][i3+Vg][i4+Vg].dh;
P> r.x = i1;
P> r.y = i2;
P> r1.x = i3+Vg;
P> r1.y = i4+Vg;
P> }
P> } // for i4
P> } //for i3
P> } // for i2
P> } //for i1
P>аналогичная прога на паскале работает намного быстрее, но исходников нет (((
P>дайте пару советов по оптимизации такого кода
Первое что бросилось в глаза — перемножение в цикле 2*CellsNum. Вычисли это произведение до циклов.
Пока на собственное сообщение не было ответов, его можно удалить.