supassMyself 2024-03-19 20:15 采纳率: 0%
浏览 138

为什么在本地运行正确,但在洛谷ide上运行错误

为什么在本地运行正确,但在洛谷ide上运行错误,洛谷P1002 过河卒

我的代码


#include<iostream>
using namespace std;

void dp(int n, int m, int Mx, int My)
{
    //初始化马的控制点
    long long board[21][21];
    board[My][Mx] = 0;
    if (My + 2 <= 20 && Mx + 1 <= 20)//防越界
    {
        board[My + 2][Mx + 1] = 0;//P1
    }
    if (My + 1 <= 20 && Mx + 2 <= 20)
    {
        board[My + 1][Mx + 2] = 0;//P2
    }
    if (My - 1 >= 0 && Mx + 2 <= 20)
    {
        board[My - 1][Mx + 2] = 0;//P3
    }
    if (My - 2 <= 20 && Mx + 1 <= 20)
    {
        board[My - 2][Mx + 1] = 0;//P4
    }
    if (My - 2 <= 20 && Mx - 1 <= 20)
    {
        board[My - 2][Mx - 1] = 0;//P5
    }
    if (My - 1 <= 20 && Mx - 2 <= 20)
    {
        board[My - 1][Mx - 2] = 0;//P6
    }
    if (My + 1 <= 20 && Mx - 2 <= 20)
    {
        board[My + 1][Mx - 2] = 0;//P7
    }
    if (My + 2 <= 20 && Mx - 1 <= 20)
    {
        board[My + 2][Mx - 1] = 0;//P8
    }
    for (int i = 0; i <= m; i++)//给棋盘每个位置赋值卒到该格有几条路
    {
        for (int j = 0; j <= n; j++)
        {
            if (board[i][j] != 0 && (i == 0 || j == 0))
                board[i][j] = 1;
            else if (board[i][j] != 0)
                board[i][j] = board[i - 1][j] + board[i][j - 1];
        }
    }
    cout << board[m][n];
}

int main()
{
    int n, m, Mx, My;
    cin >> n >> m >> Mx >> My;
    dp(n, m, Mx, My);

    return 0;
}
  • 写回答

4条回答 默认 最新

  • 码农阿豪@新空间 新星创作者: 前端开发技术领域 2024-03-19 20:15
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    可能是因为洛谷ide上的编译器和本地的不同,导致代码在洛谷上出现了错误。例如,本地的编译器可能会默认开启一些特性或者有一些默认设置,而洛谷ide的编译器可能没有这些特性或者设置。 解决方法可以尝试调整代码或者尝试在洛谷ide上手动开启一些需要的特性或者设置。同时,可以在洛谷ide上尝试复制粘贴其他通过此题的同学的代码进行尝试。 以下是一份AC代码,供参考:
    #include <iostream>
    using namespace std;
    long long dp[21][21];
    int main() {
        int n, m, x, y;
        cin >> n >> m >> x >> y;
        dp[0][0] = 1;  // 初始化边界
        for (int i = 1; i <= m; i++) {
            for (int j = 1; j <= n; j++) {
                if (i == y && j == x) {  // 马当前位置
                    dp[i][j] = 0;
                    continue;
                }
                dp[i][j] = dp[i - 1][j] + dp[i][j - 1]; // 转移
            }
        }
        cout << dp[m][n] << endl;
        return 0;
    }
    评论

报告相同问题?

问题事件

  • 创建了问题 3月19日