问题标题: 酷町堂:3398 递归函数

0
0
已解决
李瑞曦
李瑞曦
高级天翼
高级天翼

超时71

我的代码:

#include<iostream>
using namespace std;
int f(int a,int b,int c){
    if(a<=0||b<=0||c<=0){
        return 1;
    }
    if(a>20||b>20||c>20){
        return f(20,20,20);
    }
    if(a<b&&b<c){
        return f(a,b,c-1)+f(a,b-1,c-1)-f(a,b-1,c);
    }
    return f(a-1,b,c)+f(a-1,b-1,c)+f(a-1,b,c-1)-f(a-1,b-1,c-1);
}
int main(){
    int a,b,c;
    cin>>a>>b>>c;
    while(a!=-1&&b!=-1&&c!=-1){
        cout<<"w("<<a<<", "<<b<<", "<<c<<')'<<" = "<<f(a,b,c)<<endl;
        cin>>a>>b>>c;
    }
    return 0;
}

为啥呀

求大佬帮助

QwQ

李瑞曦在2021-04-04 14:46:02追加了内容

ding


0
已采纳
张帆
张帆
中级天翼
中级天翼

记忆化搜索:

if(jyh[a][b][c]!=0) return jyh[a][b][c];
……
return jyh[a][b][c]=……;

在递归循环里面

0
0
汪恺恒
汪恺恒
中级启示者
中级启示者

这题要用记忆化搜索

我要回答