Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Zamiana elementów w tablicach tak aby ich sumy były równe

Ostatnio zmodyfikowano 2017-07-14 13:58
Autor Wiadomość
Mateusz99
Temat założony przez niniejszego użytkownika
Zamiana elementów w tablicach tak aby ich sumy były równe
» 2017-07-14 12:41:20
Próbuje rozgryźć algorytm, który sprawdza czy da się podmieniać elementy w dwóch tablicach tak aby ich suma była równa, jednak spotykam się z kilkoma problemami.

C/C++
const long m = 1000000;
for( int i = 0; i < n; i++ )
{
    sumaA += A[ i ];
    sumaB += B[ i ];
}

bool wynik = false;
long d = sumaB - sumaA;
if( d % 2 == 0 )
{
    d /= 2;
    for( int i = 0; i < n; i++ )
         zlicz[ A[ i ] ] ++;
   
    for( int i = 0; i < n; i++ )
    if( 0 < = B[ i ] - d && B[ i ] - d <= m && zlicz[ B[ i ] - d ] > 0 )
         wynik = true;
   
}

Nie za bardzo rozumiem jaki jest cel dzielenia sumy przez 2 oraz czemu gdy suma jest nieparzysta od razu wiadomo, że nie da się zamienić elementów tak aby sumy były równe, druga sprawa to warunki w ostatnim if'ie.
P-163262
RazzorFlame
» 2017-07-14 13:41:05
Jeśli różnica dwóch sum nie jest parzysta to nie ma opcji, żeby podzielić po równo takie sumy. Któraś będzie musiała być większa a któraś mniejsza.
Przykład:
SumaA = 40;
SumaB = 30;
Okej, różnica jest parzysta (40-30 = 10), można zmienić ich wartość na:
SumaA = 35;
SumaB = 35;

Drugi przykład:
SumaA = 41;
SumaB = 30;
Różnica nie jest parzysta (41-30 = 11), najbliższa zbliżona do siebie ich wartość to:
SumaA = 36;
SumaB = 35;
P-163267
Mateusz99
Temat założony przez niniejszego użytkownika
» 2017-07-14 13:58:20
No tak >,< faktycznie racja :)
P-163271
« 1 »
  Strona 1 z 1