可以通过优化搜索AC吗?
查看原帖
可以通过优化搜索AC吗?
225616
Pansq楼主2025/6/20 21:48

本人用深度优先搜索尝试本题,结果有两个点TLE. 代码如下:

#include <bits/stdc++.h>
using namespace std;
int m,n,p,q;
int cnt=0;
bool book[21][21];
void dfs(int x,int y)
{
	if(x>n)	return;
	if(y>m) return;
	if(x==n && y==m)
	{
		cnt++;
		return;
	}
	if(book[x][y]==0)
	{
		book[x][y]=1;	
		dfs(x+1,y);
		dfs(x,y+1);
		book[x][y]=0;
	}
	return;
	
}
int main()
{
	cin>>n>>m>>p>>q;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			book[i][j]=0;
	book[p][q]=1;
	book[p-1][q+2]=1;
	book[p-1][q-2]=1;
	book[p+1][q-2]=1;
	book[p+1][q+2]=1;
	book[p-2][q-1]=1;
	book[p-2][q+1]=1;
	book[p+2][q-1]=1;
	book[p+2][q+1]=1;
	dfs(0,0);
	cout<<cnt;
	return 0;
}

看过题解后发现本题分类为dp.但是本人也在思考:能不能通过优化搜索的方式解决本题呢?? 由此,向诸位求助.谢谢!

2025/6/20 21:48
加载中...