第九个点超时,求助
查看原帖
第九个点超时,求助
102605
AloneV楼主2022/8/8 02:04
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<queue>
#include<iostream>
#include<algorithm>
using namespace std;
char cc;
int r,c,sum;
int dx[4]={1,0,-1,0};
int dy[4]={0,1,0,-1};
bool a[201][201],mark[201][201],flag;
struct node
{
	int X;
	int Y;
}ans[100001];
void dfs(int k,int x,int y)
{
	if (flag==1)	{return;}
	if (x==r&&y==c&&flag==0)
	{	
		for (int i=1;i<k;i++)	
		{
			flag=1;
			cout<<ans[i].X<<" "<<ans[i].Y<<endl;
		}
		cout<<r<<" "<<c;
	}
	else
	{
		for (int i=0;i<4;i++)
		{
			if (a[x][y]&&(!mark[x][y]))
			{
				ans[k].X=x;
				ans[k].Y=y;
				mark[x][y]=1;
				dfs(k+1,x+dx[i],y+dy[i]);
				mark[x][y]=0;
			}
		}
	}
}
int main()
{
	cin>>r>>c;
	for (int i=1;i<=r;i++)
		for (int j=1;j<=c;j++)
		{
			cin>>cc;
			if (cc=='.')	{a[i][j]=1;}
			if (cc=='*')	{a[i][j]=0;}
		}
	dfs(1,1,1);
	return 0;
}

2022/8/8 02:04
加载中...