1 #include<iostream>/*cout<<endl; 2 for(int i=1;i<=n;i++) 3 for(int j=0;j<n;j++){ 4 5 cout<<a[i][j]; 6 if(j==n-1)cout<<endl; 7 }*/ 8 #include<cstring> 9 #include<cstdio> 10 using namespace std; 11 const int wd=101; 12 bool how[wd][wd]; 13 char a[wd][wd]; 14 int n=0; 15 int drx[8]={0,0,1,-1,1,-1,-1,1}, 16 dry[8]={1,-1,0,0,1,1,-1,-1};//方向 17 char word[7]={‘y‘,‘i‘,‘z‘,‘h‘,‘o‘,‘n‘,‘g‘}; //搜索关键字 18 inline void sar(int x,int y,int d,int c){//坐标x,y 方向 字符位置 19 int xx=0,yy=0; 20 if(d==-1){ 21 for(int i=0;i<8;i++){ 22 xx=x+drx[i]; 23 yy=y+drx[i]; 24 if(a[xx][yy]==word[c])sar(xx,yy,i,c+1);//方向不变 25 } 26 return; 27 } 28 if(c==7){ 29 x=xx;y=yy; 30 for(int i=1;i<=7;i++){ 31 how[x][y]=1; 32 xx-=drx[d]; 33 yy-=dry[d]; 34 } 35 return; 36 } 37 xx=x+drx[d]; 38 yy=y+drx[d]; 39 if(a[xx][yy]==word[c])sar(xx,yy,d,c+1); 40 } 41 42 int main(){ 43 scanf("%d",&n); 44 for(int i=1;i<=n;i++)scanf("%s",a[i]+1);//输入测试完成 45 for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){ 46 if(a[i][j]==‘y‘)sar(i,j,-1,1); 47 } 48 for(int i=1;i<=n;i++) 49 {cout<<endl; 50 for(int j=1;j<=n;j++){ 51 cout<<how[i][j]; 52 if(how[i][j]==1)cout<<a[i][j]; 53 else cout<<"*"; 54 }} 55 return 0; 56 }
时间: 2024-12-11 18:53:53