首页 > 解决方案 > 谁能告诉我第一个代码和第二个代码之间的区别?

问题描述

谁能告诉我第一个代码和第二个代码之间的区别?

第一个适用于(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;

}

标签: c++recursion

解决方案


不同之处在于,虽然函数在第一个片段中s计算,但第二个版本计算.max(...)max(..., t)

为什么不声明t为局部变量?


推荐阅读