两个点tle了求助求助
查看原帖
两个点tle了求助求助
489347
wyz123341楼主2021/3/27 16:01
#include<bits/stdc++.h>
using namespace std;
const int N = 25;

long long path[N][N];
long long solve(int m,int n)
{
    if(path[m][n] == 0||(m==0&&n==0))
        return 0;
    else if(m == 0 || n == 0)
        return 1;
    else
        return solve(m-1,n) + solve(m,n-1);

}



int main()
{
    int m,n,p,q;
    cin>>m>>n>>p>>q;
    for(int i = 0;i <= m;i++)//先把所有位置置为1,表示能走到
    {
        for(int j = 0;j <= n;j++)
        {
            path[i][j] = 1;
        }
    }

    //以下是把马能走到的位置置0
    if(p-2>=0&&q-1>=0)
        path[p-2][q-1] = 0;
    if(p-2>=0&&q+1<=n)
        path[p-2][q+1] = 0;
    if(p+2<=m&&q-1>=0)
        path[p+2][q-1] = 0;
    if(p+2<=m&&q+1<=n)
        path[p+2][q+1] = 0;

    if(p-1>=0&&q-2>=0)
        path[p-1][q-2] = 0;
    if(p-1>=0&&q+2<=n)
        path[p-1][q+2] = 0;
    if(p+1<=m&&q-2>=0)
        path[p+1][q-2] = 0;
    if(p+1<=m&&q+2<=n)
        path[p+1][q+2] = 0;

    path[p][q] = 0;


    cout<<solve(m,n);

    return 0;
}

2021/3/27 16:01
加载中...