不会呀!!!!!
查看原帖
不会呀!!!!!
548118
caizihaolg楼主2022/12/8 12:24
#include<bits/stdc++.h>
using namespace std;
const string S="yizhong";
int dx[8]={-1,-1,-1,0,0,1,1,1},dy[8]={-1,0,1,-1,1,-1,0,1};
int n,v[110][110];
char c[110][110];
bool sc(int x,int y)//判断是不是在“yizhong”范围内 
{
	bool fl=true;
	for(int i=0;i<7;i++)
		if(c[x][y]==S[i]/* && sfc(i,x,y)*/)
		{
			fl=false;
			break;
		}
	return !fl;
}
/*
bool sfc(int x,int y)
{
	//if(c[x][y+1]==S[i+1] || c[x][y+1]==S[i-1] && c[x+1][y-1])
	bool fl=false;
	for(int i=0;i<8;i++)
	{
		int xx=x+dx[i],yy=y+dy[i];
	//	cout<<xx<<" "<<yy<<endl;
		if(sc(xx,yy) && c[xx][yy]!=c[x][y])
			fl=true;
	}
	return fl;
}
*/
void dfs(int x,int y)//dfs深搜 
{
	for(int i=0;i<8;i++)
	{
		int xx=x+dx[i],yy=y+dy[i];
		if(sc(xx,yy))
			continue;
		if(xx<=n && xx>=1 && yy<=n && yy>=1 && v[xx][yy]==0)
		{
			v[xx][yy]=1;
			dfs(xx,yy);
			//v[xx][yy]=0;
		}
	}
}
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)//读入 
		scanf("%s",c[i]+1);
	for(int i=1;i<=n;i++)//判断是不是开头'y'或结尾'g' 
		for(int j=1;j<=n;j++)
			if(c[i][j]=='y' || c[i][j]=='g')
				dfs(i,j);//进去搜一遍 
	//cout<<endl;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			if(v[i][j]==0)
				printf("%c",c[i][j]);
			else
				printf("*");
		}
		printf("\n");
	}
	
	return 0;
}
/*

8
qyizhong
gydthkjy
nwidghji
orbzsfgz
hhgrhwth
zzzzzozo
iwdfrgng
yyyygggg

*/

2022/12/8 12:24
加载中...