3,4tle了,用递归写的,求佬帮忙看看
查看原帖
3,4tle了,用递归写的,求佬帮忙看看
1166381
zzyandzy楼主2023/11/22 16:09
#include<iostream>

using namespace std;

int arr[22][22],i,j;
int a,b,m,n;
long long int sum;
void way(int i,int j,int (*arr)[22])
{
    if(i==m&&j==n)  
    { 
        sum++;
    }
    else
    {   if(i+1<=m&&j+1<=n)
        {if(*(arr[i+1]+j)!=1) way(i+1,j,arr);
         if(*(arr[i]+j+1)!=1) way(i,j+1,arr);
        }
        if(i==m&&j+1<=n) way(i,j+1,arr);
        if(i+1<=m&&j==n) way(i+1,j,arr);
    }
    return;
}
int main()
{
    
    scanf("%d %d %d %d",&m,&n,&a,&b);
    arr[a][b]=1;
    if(a-2>=0&&b-1>=0)arr[a-2][b-1]=1;
    if(a-1>=0&&b-2>=0)arr[a-1][b-2]=1;
    arr[a+2][b+1]=1;
    arr[a+1][b+2]=1;
    if(a-1>=0)arr[a-1][b+2]=1;
   if(b-2>=0) arr[a+1][b-2]=1;
    if(b-1>=0)arr[a+2][b-1]=1;
    if(a-2>=0)arr[a-2][b+1]=1;
    way(i,j,arr);
    printf("%d",sum);
}
2023/11/22 16:09
加载中...