为甚么不输出?
查看原帖
为甚么不输出?
471767
Ar_cher楼主2023/5/8 22:41

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;
} 
2023/5/8 22:41
加载中...