60pts,悬关
查看原帖
60pts,悬关
763299
Storm_Lightning楼主2023/9/24 14:35

求给位大佬帮我看看(悬关)

#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m;
char s[110][110];
int flag;
int dr[4]={-1,0,1,0};
int dc[4]={0,1,0,-1};
int vis[110][110];
int cnt;
bool check(int x,int y)
{
	if(x<1||x>n||y<1||y>m||vis[x][y]==1||s[x][y]=='#')
	{
		return false;
	}
	return true;
}
void dfs(int row,int col)
{
	if(s[row][col]=='#') return;
	if(row==n&&col==m) flag=1;
	if(flag==1) return;
	for(int i=0;i<4;i++)
	{
		int r=row+dr[i];
		int c=col+dc[i];
		if(check(r,c)==true) 
		{
			vis[r][c]=1;
			dfs(r,c);
			vis[r][c]=0;
		}
	}
	return;
}
signed main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin>>s[i][j];
	vis[1][1]=1;
	dfs(1,1);
	if(flag) cout<<"Yes"<<endl;
	else cout<<"No"<<endl;
	return 0;
}
2023/9/24 14:35
加载中...