求助,为什么我的代码一定要加longlong才能过?
查看原帖
求助,为什么我的代码一定要加longlong才能过?
297555
Zlc晨鑫楼主2021/7/15 11:13

My code:

#include <cstdio>
#include <iostream>

using namespace std;

long long C[40][40];

int main()
{
    C[0][1] = 1; // 递推边界
    
    // 杨辉三角
    for (int i = 1; i <= 40; ++i)
        for (int j = 1; j <= i; ++j)
            C[i][j] = C[i - 1][j] + C[i - 1][j - 1];
            
    // 卡特兰数通项公式
    int n;
    scanf("%d", &n);
    printf("%d\n", C[2 * n + 1][n + 1] / (n + 1));
    
    return 0;
}

题解的代码(bushi抄题解)(

#include<cstdio>

using namespace std;

const int siz = 20;
int n, c[siz*2][siz];

int main()
{
    scanf("%d", &n);
    for (int i = 1; i <= 2 * n; ++i) 
        c[i][1] = c[i][i] = 1;
    for (int i = 3; i <= 2 * n; i++)
        for (int j = 2; j < i; j++)
            c[i][j] = c[i - 1][j] + c[i - 1][j - 1];
    printf("%d", c[2 * n][n] - c[2 * n][n - 1]);
    return 0;
}
2021/7/15 11:13
加载中...