作业介绍
#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 小时