记忆化搜索wa了一半,没看懂QAQ

P1255 数楼梯

真香警告AQA @ 2024-11-12 13:43:33

写了个记忆化搜索发现wa了一半的点(输入为47就wa了不是炸数据大小的问题),没看懂哪个地方思路错了,求各位大犇看看

#include <stdio.h>
#include <string.h>
#define N 5050

typedef unsigned long long ull ;

ull memo[N];

//从x阶到y阶走法总数
int cal(int x,int y){
    ull sum=0;

    if(memo[x]!=0) return memo[x];

    if(y==0) return 0;
    if(x==y-1)    return 1;
    if(x==y)    return 1;

    sum=cal(x+1,y)+cal(x+2,y);

    memo[x]=sum;
    return sum;
}

int main(){
    int n;
    memset(memo,0,sizeof(memo));//抱着死马当活马医的态度写了个初始化
    scanf("%d",&n);

    printf("%d",cal(0,n));
    return 0;
}

by wwwcn @ 2024-11-12 13:49:57

您好,这道题的答案为斐波那契数列第 n 项,数据范围远远超过了 unsigned long long 的存储范围,对此,您可以使用高精度或者用 python


by 真香警告AQA @ 2024-11-12 13:50:00

沃趣我发现了,我把ull用%d输出了TAT


by 真香警告AQA @ 2024-11-12 13:51:53

@wwwcn 懂了。没看到高精标签(笑哭了


|