题目 https://www.luogu.com.cn/problem/P1101

题目要求输出包含 yizhong 所有方向排列的矩阵图
观察答案除了yizhong 均为星号
因此我们可以用bool数组来标记每个位置的状态
定义星号为无效状态 false
我们对原矩阵图 进行遍历
每当找到一个y就试一下它各个方向是否满足
yizhong
如果有一个方向满足条件 就将该方向所有满足条件的位置打上有效标志
题目规定可以交叉可以共用 因为我们有效状态都是标记为true
所以一个位置标记几次true都没事 对我们的答案没有影响
完整代码
#include<bits/stdc++.h>
 using namespace std;
 const int N=110;
 char a[N][N];
 int n;
 char c[8]={'y','i','z','h','o','n','g'}; //用于检查答案的数组 
 int dir[8][2]={{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}};
 //搜索的八个方向的数组 搜索小技巧 
 bool b[N][N];//状态数组 
 void check(int x,int y){
     for(int i=0;i<8;i++){
     
         for(int j = 0;j <= 6;j++)
         {
             int dx = x + j*dir[i][0];
             int dy = y + j*dir[i][1];
             //搜索该方向所有位置是否匹配 
             if(a[dx][dy]  != c[j]){
                 break ;//有一个不匹配就退出当前循环 
             }
             
             if(a[dx][dy]=='g')
             {
              //当前循环完毕所有条件均匹配 将沿途位置打上有效的标记 
                 for(int j = 0;j <= 6;j++)
                 {
                     int dx = x + j*dir[i][0];
                     int dy = y + j*dir[i][1];
                     if(a[dx][dy]  == c[j])
                     {
                             b[dx][dy] = true;
                     }
                 }
                 
             }
         }
     }
     
 }
 int main(){
     cin>>n;
     for(int i = 1;i <= n;i++){
         for(int j = 1;j <= n;j++){
             cin>>a[i][j];
         }
     }    
     
     for(int i = 1;i <= n;i++){
         for(int j = 1;j <= n;j++){
             if(a[i][j]=='y'){//遍历检查y 
                 check(i,j);
             }
         }
     }
     
     for(int i = 1;i <= n;i++){
         for(int j = 1;j <= n;j++){
             if(b[i][j]==true){//如果有效输出原来位置的字母 
                 cout<<a[i][j];
             }else{
                 cout<<'*';
             }
         }
         cout<<endl;
     }    
     
     return 0;
 }

















![[Deep Learning] Anaconda+CUDA+CuDNN+Pytorch(GPU)环境配置-2025](https://i-blog.csdnimg.cn/direct/55fa37ad880a4beab115d3389f3a94cb.png)

