【三月】第三次课上练习

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;
}
 
View Code

 

posted @ 2022-04-09 09:14  Oranges  阅读(50)  评论(0编辑  收藏  举报