1 条题解

  • 0
    @ 2024-10-21 0:27:19
    #include<bits/stdc++.h>
    
    using namespace std;
    
    const int N=110;
    char stand[]="yizhong";
    int dir[][2]={{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}};
    char fz[N][N];//保存单词矩阵和标准的stand作对比
    int vis[N][N];//保存路径答案
    int n;
    struct node
    {
    	int x,y;//表示每个答案的坐标
    }c[N];//存储路径
    
    void dfs(int x,int y,node c[],int k,int cnt)
    {
    	if(cnt==7)
    	{
    		for(int i=0;i<7;i++)
    			vis[c[i].x][c[i].y]=1;//将路径变成答案
    	}
    	else
    	{
    		int dx=x+dir[k][0];
    		int dy=y+dir[k][1];
    		if(fz[dx][dy]==stand[cnt+1]||cnt==6)
    		{
    			c[cnt].x=x,c[cnt].y=y;
    			dfs(dx,dy,c,k,cnt+1);
    		}
    	}
    }
    
    int main()
    {
    	cin>>n;
    	
    	for(int i=0;i<n;i++)
    		for(int j=0;j<n;j++)
    		{
    			cin>>fz[i][j];
    		}
    	
    	memset(vis,0,sizeof(vis));
    	
    	for(int i=0;i<n;i++)
    		for(int j=0;j<n;j++)
    			if(fz[i][j]=='y')
    				for(int k=0;k<8;k++)
    				{
    					int x=i+dir[k][0];
    					int y=j+dir[k][1];
    					if(fz[x][y]=='i')//找到正确方向
    						dfs(i,j,c,k,0);
    				}
    	
    	for(int i=0;i<n;i++)
    	{
    		for(int j=0;j<n;j++)
    			if(vis[i][j]) printf("%c",fz[i][j]);
    			else printf("*");
    		cout<<endl;
    	}	
    	return 0;
    }
    
    • 1

    信息

    ID
    121
    时间
    1000ms
    内存
    256MiB
    难度
    4
    标签
    递交数
    39
    已通过
    20
    上传者