讨论我的代码的WA点
查看原帖
讨论我的代码的WA点
615281
taoyunpeng楼主2024/10/22 21:59

谁能救救我,,,

有很大的问题

#include <iostream>
#include <vector>
#include <algorithm>
#include <cstring>
using namespace std;

const int MAXN = 300;
const int MAXX = 300;
const int MAXP = 1000000000;
int mod;

long long dp[MAXN + 1][MAXX + 1];

// 初始化动态规划数组
void init(int n) {
    for (int i = 0; i <= n; ++i) {
        for (int j = 0; j <= MAXX; ++j) {
            dp[i][j] = 0;
        }
    }
    dp[0][0] = 1; // 初始化状态,表示没有方块时有一种方式
}

// 计算组合数,使用模数运算
long long comb(int n, int k) {
    if (k > n || k < 0) return 0;
    long long res = 1;
    for (int i = 0; i < k; ++i) {
        res = res * (n - i) % mod;
        res = res * pow(i + 1, mod - 2, mod) % mod;
    }
    return res;
}

// 动态规划求解
long long solve(int n, int x) {
    init(n);
    long long total = 0;
    for (int i = 1; i <= n; ++i) {
        for (int j = 1; j <= x; ++j) {
            dp[i][j] = (dp[i][j] + dp[i - 1][j - 1]) % mod;
            if (j > 1) {
                dp[i][j] = (dp[i][j] + dp[i][j - 1]) % mod;
            }
        }
    }
    for (int i = 0; i <= n; ++i) {
        total = (total + dp[i][x]) % mod;
    }
    return total;
}

int main() {
    int T, p;
    cin >> T >> p;
    mod = p;

    while (T--) {
        int n, x;
        cin >> n >> x;
        cout << solve(n, x) << endl;
    }

    return 0;
}

帮忙答疑解惑一下!求求啦!

2024/10/22 21:59
加载中...