作业介绍

#include<bits/stdc++.h>
using namespace std;
const int N=1e3+10; 
int n,m,qx,qy,zx,zy,v[N][N],ans;
char a[N][N]; 
int dx[]={-1,0,1,0};//0上  1左  2下   3右 
int dy[]={0,-1,0,1};
void dfs(int x,int y){//当前所在点x,y 
	for(int i=0;i<=3;i++){
		int xx=x+dx[i];
		int yy=y+dy[i];
		if(xx>=1 && xx<=n && yy>=1 && yy<=m && a[xx][yy]!='0'){
			a[xx][yy]='0';
			dfs(xx,yy);
		}
	}
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>a[i][j];
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			if(a[i][j]!='0'){
				dfs(i,j);
				ans++;
			}
		}
	}
	cout<<ans;
	return 0;
}
#include<bits/stdc++.h>
using namespace std;
const int N=1e2+5;
int n,a[N][N],v[N][N];//a数组存储地图
int qx,qy,zx,zy,flag; //flag==1 代表能到终点 
int dx[10]={-1,0,1,0};//方向数组   下标0上 1左  2下  3右 
int dy[10]={0,-1,0,1};
void dfs(int x,int y){//当前走到的点是x,y 
	if(x==zx && y==zy){
		flag=1;//能到终点
		return ;//返回 
	} 
	//没到终点   尝试4个方向 看有没有路可走
	//上   左  下  右  
	for(int i=0;i<=3;i++){//i代表方向 
		int xx=x+dx[i];//x-1    x
		int yy=y+dy[i];//y      y-1
		//判断有没有越界                       不是障碍         没有走过 
		if(xx>=1 && xx<=n && yy>=1 && yy<=n && a[xx][yy]!=1 &&  v[xx][yy]==0){
			v[xx][yy]=1;//标记已被访问 
			dfs(xx,yy);
		}
	}		 
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cin>>a[i][j];
		}
	}
	cin>>qx>>qy>>zx>>zy;
	v[qx][qy]=1;
	dfs(qx,qy);//从起点出发 
	if(flag==1) cout<<"YES";
	else cout<<"NO"; 
	return 0; 
} 
  

ac!

状态
已结束
题目
6
开始时间
2025-2-1 0:00
截止时间
2025-3-31 23:59
可延期
24 小时