P1605 用DFS,检查了起始点状态无误(已标记),但只有40分
  • 板块P1605 迷宫
  • 楼主LTTXiaochuan
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/7/15 20:09
  • 上次更新2024/7/15 21:10:13
查看原帖
P1605 用DFS,检查了起始点状态无误(已标记),但只有40分
1391256
LTTXiaochuan楼主2024/7/15 20:09

代码如下:

#include <bits/stdc++.h>
using namespace std;
int n,m,t,sx,sy,fx,fy,tot;
int ne[4][2]={{0,1},{1,0},{-1,0},{0,-1}};
int mapk[105][7];
void dfs(int x,int y)
{
	if(x==fx && y==fy)
	{
		tot++;
		return;
	}
	for(int k=0; k<=3; k++)
	{
		if(x+ne[k][0]<1 || x+ne[k][0]>n) continue;
		if(y+ne[k][1]<1 || y+ne[k][1]>m) continue;
		if(mapk[x+ne[k][0]][y+ne[k][1]]==0)
		{
			x=x+ne[k][0];
			y=y+ne[k][1];
			mapk[x][y]=1;
			dfs(x,y);
			mapk[x][y]=0;
		}
	}
	return;
}
int main()
{
	cin>>n>>m>>t;
	cin>>sx>>sy>>fx>>fy;
	mapk[sx][sy]=1;
	for(int i=1; i<=t; i++)
	{
		int x,y;
		cin>>x>>y;
		mapk[x][y]=2;
	}
	dfs(sx,sy);
	cout<<tot;
	return 0;
}

十分感激。

2024/7/15 20:09
加载中...