UKE 代码,自以为然,但零分。有为蒟蒻大佬调,深德之。
此代码曰:
#include <iostream>
#define int long long
using namespace std;
const int N=55;
int n,m;
int fx[4]={0,1,0,-1},fy[4]={1,0,-1,0};
char map[N][N];
int vis[N][N];//标记数组
bool dfs(int x,int y,int mx,int my){
if(vis[x][y]==1) return 1;//搜索边界
for(int i=0;i<4;i++){
int tx=fx[i]+x;
int ty=fy[i]+y;
if((tx!=mx or ty!=my) and map[x][y]==map[tx][ty]){
//坐标有一个不等可以过
//起点坐标等于终点坐标
if(dfs(tx,ty,x,y)!=0)
return 1;
}
}
return 0;
}
signed main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>map[i][j];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(!vis[i][j]){
if(dfs(i,j,i,j)){
//起点坐标(x,y)和终点坐标(mx,my)
cout<<"Yes";
return 0;
}
}
}
}
cout<<"No";
return 0;
}