关于修改判断方式
查看原帖
关于修改判断方式
349187
AniYPc421楼主2020/10/30 21:21

下面是能 AC 的代码:

bool solve(int &W) {
    int W1, D1, W2, D2;
    bool b1 = true, b2 = true;
    std::cin >> W1 >> D1 >> W2 >> D2;
    if(!W1) b1 = solve(W1);
    if(!W2) b2 = solve(W2);
    W = W1 + W2;
    return b1 && b2 && (W1 * D1 == W2 * D2);
}

我在想,反正假如看到一个地方不平衡,那么肯定整个天平都不平衡了啊,于是我为了减少递归次数,修改成如下代码:

bool solve(int &W) {
    int W1, D1, W2, D2;
    std::cin >> W1 >> D1 >> W2 >> D2;
    if(!W1) if(!solve(W1)) return false;
    if(!W2) if(!solve(W2)) return false;
    W = W1 + W2;
    return W1 * D1 == W2 * D2;
}

结果换回来一堆 WA...很难受。_(:з」∠)_

自己脑子不够用,实在没想出来哪里出了问题。因此想来问问各位大牛们,这么改的不可行性究竟在哪里?

2020/10/30 21:21
加载中...