кто-нибудь может сказать мне разницу между первым кодом и вторым? - PullRequest
0 голосов
/ 30 марта 2020

Может ли кто-нибудь сказать мне разницу между первым кодом и вторым?

Первый работает с проблемой (https://codeforces.com/problemset/problem/189/A), пока другой не работает.

1-

ll s(ll nn)
{

    if (nn < 0)
        return -1e9;

    else if (nn == 0)
        return 0;

    t= max({ s(nn - a) + 1, s(nn - b) + 1, s(nn - c) + 1 });
    return t;

}

2-

ll t = -1e9;

ll s(ll nn)
{

    if (nn < 0)
        return -1e9;

    else if (nn == 0)
        return 0;

    t = max(s(nn - a) + 1, t);
    t = max(s(nn - b) + 1, t);
    t = max(s(nn - c) + 1, t);

    return t;

}

1 Ответ

3 голосов
/ 30 марта 2020

Разница в том, что в то время как функция s вычисляет max(...) в первом фрагменте, вторая версия вычисляет max(..., t).

Почему бы не объявить t как локальную переменную?

...