|
- #include <cstdio>
- #include <iostream>
- using namespace std;
- ///yizhong 7
- int n;
- bool b[103][103];
- char a[103][103];
- char kk[8]={'.','y','i','z','h','o','n','g'};
- int fuzhu[8][2]={{1,0},{0,1},{1,1},{1,-1},{-1,1},{0,-1},{-1,-1},{-1,0}};
- ///y
- ///i
- ///记录方向k
- void su(int p,int q,int x,int y)
- {
- for(int i=0;i<=6;i++)
- {
- b[p+i*x][q+i*y]=true;
- }
- return;
- }
- void xiuxi(int p,int q,int step,int x,int y)
- {
-
- if(step==7)
- {
- su(p,q,x,y);
- return;
- }
- if(p+x*step>=n || p+x*step<0 || q+y*step>=n || q+y*step<0) return;
- if(a[p+x*step][q+y*step]==kk[step+1])
- {
- xiuxi(p,q,step+1,x,y);
- }
- else return;
- return;
- }
- void sou1(int p,int q)
- {
- for(int i=0;i<=7;i++)
- {
- int x=fuzhu[i][0];
- int y=fuzhu[i][1];
- if(p+x<n && q+y>=0 && p+x>=0 && q+y<n)
- {
- if(a[p+x][q+y]=='i')
- {
- xiuxi(p,q,1,x,y);
- }
- }
- }
- return;
- }
- void nowgo()
- {
- for(int i=0;i<n;i++)
- {
- for(int j=0;j<n;j++)
- {
- if(a[i][j]=='y')
- {
- sou1(i,j);
- }
- }
- }
- return;
- }
- int main()
- {
- scanf("%d",&n);
- for(int i=0;i<n;i++)
- {
- cin>>a[i];
- }
- nowgo();
- for(int i=0;i<n;i++)
- {
- for(int j=0;j<n;j++)
- {
- ///printf("%d",b[i][j]);
- if(b[i][j]) printf("%c",a[i][j]);
- else printf("*");
- }
- printf("\n");
- }
- return 0;
- }
复制代码 |
|