测试数据下载了以后vs运行结果正确,洛谷显示结果错误
查看原帖
测试数据下载了以后vs运行结果正确,洛谷显示结果错误
1042314
AIBEYOND楼主2023/7/25 13:06

下载了第一个测试数据输入8 6 0 4 输出1617

#include <iostream>
using namespace std;
int m, n;
void Init(long long G[][25], int a, int b)         //对dp数组初始化,对方马的控制点初始化为0
{
    if (a - 2 >= 0)
    {
        if (b - 1 >= 0)
        {
            G[a - 2][b - 1] = 0;
        }
        if (b + 1 <= m)
        {
            G[a - 2][b + 1] = 0;
        }
    }
    if (a - 1 >= 0)
    {
        if (b - 2 >= 0)
        {
            G[a - 1][b - 2] = 0;
        }
        if (b + 2 <= m)
        {
            G[a - 1][b + 2] = 0;
        }
    }
    if (a + 1 <= n)
    {
        if (b - 2 >= 0)
        {
            G[a + 1][b - 2] = 0;
        }
        if (b + 2 <= m)
        {
            G[a + 1][b + 2] = 0;
        }
    }
    if (a + 2 <= n)
    {
        if (b - 1 >= 0)
        {
            G[a + 2][b - 1] = 0;
        }
        if (b + 1 <= m)
        {
            G[a + 2][b + 1] = 0;
        }
    }
    G[a][b] = 0;
}
int main()
{
    int a, b;
    cin >> n >> m >> a >> b;
    long long G[25][25];
    Init(G, a, b);
    G[0][0] = 1;
    for (int i = 1;i <= m;i++)           //对第0行初始化
    {
        if (G[0][i] != 0)
        {
            G[0][i] = G[0][i - 1];
        }
    }
    for (int i = 1;i <= n;i++)           //对第0列初始化
    {
        if (G[i][0] != 0)
        {
            G[i][0] = G[i - 1][0];
        }
    }
    for (int i = 1;i <= n;i++)
    {
        for (int j = 1;j <= m;j++)
        {
            if (G[i][j] == 0)            //若为对方马的控制点
            {
                G[i][j] = 0;
            }
            else
            {
                G[i][j] = G[i - 1][j] + G[i][j - 1];
            }
        }
    }
    cout << G[n][m];
    return 0;
}

求大佬救一下

2023/7/25 13:06
加载中...