60分,求助,帮助者+1关注
查看原帖
60分,求助,帮助者+1关注
735164
pengqiushi楼主2022/9/22 22:20

代码如下:

#include<iostream>
using namespace std;
char a[1005][1005];
int bj[1005][1005];
int n,m;
int flag=0;
bool cmp(){
	for(int i=1; i<=n; i++)
		for(int j=1; j<=m; j++)
			if(bj[i][j]==0&&a[i][j]=='.')
				return true;
	cout<<"NO";
	flag=1;
	return false;
}
int dfs(int x,int y) {
	bj[x][y]=1;
	if(x==n&&y==m){
		cout<<"Yes";
		flag=1;
		return 0;
	}
	if(cmp()==false)
		return 0;
	if(a[x+1][y]=='.'&&bj[x+1][y]==0)
		if(dfs(x+1,y)==0)
			return 0;
	if(a[x][y+1]=='.'&&bj[x][y+1]==0)
		if(dfs(x,y+1)==0)
			return 0;
	if(a[x-1][y]=='.'&&bj[x-1][y]==0)
		if(dfs(x-1,y)==0)
			return 0;
	if(a[x][y-1]=='.'&&bj[x][y-1]==0)
		if(dfs(x,y-1)==0)
			return 0;
	return 1;
}
int main() {
	cin>>n>>m;
	a[1][1]=1;
	for(int i=1; i<=n; i++)
		for(int j=1; j<=m; j++)
			cin>>a[i][j];
	if(a[1][1]=='#'||a[n][m]=='#'){
        printf("No");
        return 0;
    }
	dfs(1,1);
	if(flag==0)
		cout<<"NO";
	return 0;
}

评测记录

2022/9/22 22:20
加载中...