dfsTLE求调
查看原帖
dfsTLE求调
758211
zhangchenyi0509楼主2023/10/19 16:49
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
int n,m,hn,hm,dx[7]={1,0},dy[7]={0,1};
ll ans;
bool flag[25][25];
void dfs (int x,int y)
{
	if (x==n&&y==m)
	{
		ans++;
		return;
	}
	else
	{
		for (int i=0;i<2;i++)
		{
			int tx=x+dx[i],ty=y+dy[i];
			if (tx>=0&&tx<=n&&ty>=0&&ty<=m&&!flag[tx][ty])
			{
				dfs (tx,ty);
			}
		}
	}
}
int main()
{
	scanf ("%d%d%d%d",&n,&m,&hn,&hm);
	flag[hn][hm]=true;
	if (hn+1<=n&&hm+2<=m)
	{
		flag[hn+1][hm+2]=true;
	}
	if (hn+2<=n&&hm+1<=m)
	{
		flag[hn+2][hm+1]=true;
	}
	if (hn+2<=n&&hm-1>=0)
	{
		flag[hn+2][hm-1]=true;
	}
	if (hn+1<=n&&hm-2>=0)
	{
		flag[hn+1][hm-2]=true;
	}
	if (hn-1>=0&&hm-2>=0)
	{
		flag[hn-1][hm-2]=true;
	}
	if (hn-2>=0&&hm-1>=0)
	{
		flag[hn-2][hm-1]=true;
	}
	if (hn-2>=0&&hm+1<=m)
	{
		flag[hn-2][hm+1]=true;
	}
	if (hn-1>=0&&hm+2<=m)
	{
		flag[hn-1][hm+2]=true;
	}
	dfs (0,0);
	printf ("%d",ans);
	return 0;
}
2023/10/19 16:49
加载中...