3 条题解
-
5
还算简单
已AC,放心食用
#include <bits/stdc++.h> using namespace std; int n,m,n1,m1,n2,m2,d=0;//n行m列 char a[100][100];//保存二维数组 int e[4][2]={{0,1},{0,-1},{1,0},{-1,0}};//分别表示上下左右 void fun(int x,int y) { if(d==1) { return; } if(x==n2&&y==m2) { d=1; return; } for(int i=0;i<4;i++)//循环判断上下左右 { int x1=x+e[i][0];//计算下一个点的坐标 int y1=y+e[i][1];//计算下一个点的坐标 if(x1>=0&&y1>=0&&x1<n&&y1<n&&a[x1][y1]!='#')//判断边界,判断是否访问过,判断是否可以通过 { a[x1][y1]='#';//走过就标记为不能走 fun(x1,y1);//进入下一个点 } } } int main() { cin>>m; while(m--) { cin>>n; for(int i=0;i<n;i++) { for(int k=0;k<n;k++) { cin>>a[i][k]; } } cin>>n1>>m1>>n2>>m2; d=0; if(a[n1][m1]=='#'||a[n2][m2]=='#') { cout<<"NO"<<endl; continue; } fun(n1,m1); if(d==1) cout<<"YES"<<endl; else cout<<"NO"<<endl; } return 0; }
-
0
#include <bits/stdc++.h> using namespace std; int n,m; int x,y,x2,y2; char a[110][110]; int fx[5]={0,0,1,0,-1}; int fy[5]={0,1,0,-1,0}; bool flag; void dfs(int x,int y){ a[x][y]='#'; if (x==x2&&y==y2){ cout<<"YES"<<endl; flag=true; return; } for (int i=1;i<=4;i++){ int tx=fx[i]+x; int ty=fy[i]+y; if (tx>=0&&tx<m&&ty>=0&&ty<m&&a[tx][ty]=='.'&&!flag)dfs(tx,ty); } } int main(){ cin>>n; for (int k=1;k<=n;k++){ flag=false; cin>>m; for (int i=0;i<m;i++){ for (int j=0;j<m;j++)cin>>a[i][j]; } cin>>x>>y>>x2>>y2; if (a[x][y]=='#'||a[x2][y2]=='#'){ cout<<"NO"<<endl; continue; } dfs(x,y); if (!flag)cout<<"NO"<<endl; } return 0; }
-
-1
#include <iostream> #include <vector> bool canReachDestination(std::vector<std::vector<char>>& maze, int n, int ha, int la, int hb, int lb) { if (ha < 0 || ha >= n || la < 0 || la >= n || hb < 0 || hb >= n || lb < 0 || lb >= n || maze[ha][la] == '#' || maze[hb][lb] == '#') { return false; } if (ha == hb && la == lb) { return true; } maze[ha][la] = '#'; if (canReachDestination(maze, n, ha - 1, la, hb, lb) || canReachDestination(maze, n, ha + 1, la, hb, lb) || canReachDestination(maze, n, ha, la - 1, hb, lb) || canReachDestination(maze, n, ha, la + 1, hb, lb)) { return true; } return false; } int main() { int k; std::cin >> k; for (int i = 0; i < k; ++i) { int n; std::cin >> n; std::vector<std::vector<char>> maze(n, std::vector<char>(n)); for (int j = 0; j < n; ++j) { for (int l = 0; l < n; ++l) { std::cin >> maze[j][l]; } } int ha, la, hb, lb; std::cin >> ha >> la >> hb >> lb; if (canReachDestination(maze, n, ha, la, hb, lb)) { std::cout << "YES" << std::endl; } else { std::cout << "NO" << std::endl; } } return 0; }
函数AC解法
- 1
信息
- ID
- 2049
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 4
- 标签
- (无)
- 递交数
- 198
- 已通过
- 95
- 上传者