我为啥输出不了, 求助!!!!!!!!

P1464 Function

mediocre_ @ 2023-07-04 07:06:15

#include<bits/stdc++.h>
using namespace std;
int w(int a, int b, int c) {
    if (a <= 0 && b <= 0 && c <= 0) return 1;
    if (a > 20 && b > 20 && c > 20) return w(20, 20, 20);
    if (a < b && b < c) return w(a, b, c - 1) + w(a, b - 1, c - 1) - w(a, b - 1, c);
    return w(a - 1, b, c) + w(a - 1, b - 1, c) + w(a - 1, b, c - 1) - w(a - 1, b - 1, c - 1);
}
int main() {
    while (1) {
        int a, b, c;
        scanf("%d%d%d", &a, &b, &c);
        if (a == -1 && b == -1 && c == -1) return 0;
        printf("w(%d, %d, %d) = %d\n", a, b, c, w(a, b, c));
    }
    return 0;
}

by newamnesia @ 2023-07-04 07:12:11

@Mr_Huang12

可以试着推一下,你这样暴力模拟分支会非常多,所以并不是简单的按照题意写出函数。这道题需要其他的解法

至于你为什么MLE,可能是你连题意都没读清楚吧……你自己先重新看看哪里写错了再想优化吧。


by _zzzzzzy_ @ 2023-07-04 07:13:14

@Mr_Huang12 你TLE了,你可以算一下复杂度,要记忆话搜索


|