nadamhu Creative Commons License 2003.02.28 0 0 103
Szia!

// Igazat ad vissza, ha talalt.
BOOL keres(int* v, int n, int szumma, int ind1&, int& ind2)
{
int kisebb = 0;
int nagyobb = n-1;
while(kisebb < nagyobb)
{
int s = -1;
while(s < szumma)
{
s = v[kisebb] + v[nagyobb];
kisebb++;
}
kisebb--;
if(s == szumma)
{
ind1 = kisebb;
ind2 = nagyobb;
return true;
}
nagyobb--;
}
return false;
}

Magyarazat: a trivialis megoldas az osszes parositas megnezese lenne. Ezt tesszuk, a nagyobbik indexet elinditjuk fentrol, de a kisebbre mar nem nezunk meg olyan ertekeket, amelyek mar egy nagyob 'nagyobb'-al osszedadva is kiseb osszeget adtak mint 'szumma'...
Nem probaltam ki, remelem nem rontottam el.

Előzmény: encse (102)