求助大佬,dfsTLE60分
查看原帖
求助大佬,dfsTLE60分
544007
lhs_chris楼主2023/2/5 21:35
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e5;
ll n,m,vis[2000][2000];
char g[2000][2000];
ll ans;
ll dx[2]={1,0};
ll dy[2]={0,1};
ll da[8]={-2,-2,-1,-1,1, 1,2,2};
ll db[8]={-1,1,-2,2,-2,2,-1,1};
ll a,b,c,d;
ll maxx=9999;
ll sum;
void dfs(ll x,ll y)
{
	if(x==a and y==b)
	{
		sum++;
		return;
	}
	for(int i=0;i<2;i++)
	{
		int nx=x+dx[i];
		int ny=y+dy[i];	
		if(nx>=0 and nx<=a and ny>=0 and ny<=b and vis[nx][ny]==0)
		{
			vis[x][y]=1;
			dfs(nx,ny);
			vis[x][y]=0;
		} 
	}
}
int main()
{
	
	cin>>a>>b>>c>>d;
	vis[0][0]=1; 
	vis[c][d]=1;
	for(int i=0;i<8;i++)
	{
		vis[c+da[i]][d+db[i]]=1;
	}
	dfs(0,0);
	cout<<sum;
	return 0;
}

TLE 60分

2023/2/5 21:35
加载中...