【三月】第三次课上练习
P1101
#include<stdio.h> #include<string.h> char a[110][110]; int b[110][110]; char c[7]={'y','i','z','h','o','n','g'}; int n; int dx[]={0,0,1,-1,1,1,-1,-1}; int dy[]={-1,1,0,0,1,-1,1,-1}; int roadx[7]; int roady[7]; void dfs(int num,int x,int y,int rode){ if(num==7){ for(int i=0;i<7;i++){ int rx=roadx[i]; int ry=roady[i]; b[rx][ry]=1; } } int next_x = x+dx[rode]; int next_y = y+dy[rode]; if(next_x>=0&&next_x<n&&next_y>=0&&next_y<n&&a[next_x][next_y]==c[num]){ roadx[num]=next_x; roady[num]=next_y; dfs(num+1,next_x,next_y,rode); } } int main(){ scanf("%d",&n); for(int i=0;i<n;i++) scanf("%s",a[i]); for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ if(a[i][j]=='y'){ for(int k=0;k<8;k++){ roadx[0]=i; roady[0]=j; dfs(1,i,j,k); } } } } for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ if(b[i][j]==1){ printf("%c",a[i][j]); } else printf("*"); } printf("\n"); } return 0; }