Witam.
Mam mały problem ze zoptymalizowaniem takiej oto funkcji :
int sumup(int **tab, int max)
{
int sum = 0;
int i=0, j=0; // inicjalizacja zmiennych
for(i = 0; i < max; i++)
{
for(j = 0; j < max; j++)
{
if(i + j > max)
sum = sum + tab[i][j];
}
}
return sum;
}
Jakiegoś sensownego powodu optymalizacji nie ma, ale muszę ją wykonać.
Trochę nad tym siedzę i nie mogę sobie poradzić.
Dla przykładu, dla max = 3 przejścia pętli wyglądają tak :
// pętla zewnętrzna 0
tab[0][0]
tab[0][1]
tab[0][2]
tab[0][3]
// pętla zewnętrzna 1
tab[1][0]
tab[1][1]
tab[1][2]
tab[1][3]
// pętla zewnętrzna 2
tab[2][0]
tab[2][1]
tab[2][2]
tab[2][3]
Z tego co mi się wydaje, funkcja szuka skrajnych elementów tablicy dla jakiejś wartości max i sumuje je.
Elementów spełniających warunek if(i + j > max) jest zawsze więcej.
Czy aby zoptymalizować tą funkcję należy przeszukiwać tablicę "od tyłu" ?
Bardzo proszę o jakieś wskazówki.