求修正!!!!!
查看原帖
求修正!!!!!
685010
Domiss1017楼主2022/11/6 19:42

我为什么会多几个“g”?求大佬提点

#include<bits/stdc++.h>
using namespace std;
char a[105][105];
int v[105][105]={0};
int n;
int d[8][2]={{1,0},{0,1},{-1,0},{0,-1},{1,1},{1,-1},{-1,1},{-1,-1}};
char c[10]="yizhong";
struct point{
    int x,y;
}q[10];
void dfs(int x,int y,int k){
    int nx,ny;
    if(k==7){
        for(int i=0;i<7;i++){
            v[q[i].x][q[i].y]=1;
        }
        return;
    }
    for(int i=0;i<8;i++){
        nx=x+d[i][0];
        ny=y+d[i][1];
        if(nx<0||ny<0||nx>=n||ny>=n) continue;
        if(a[nx][ny]==c[k]){
            q[k].x=nx;
            q[k].y=ny;
            dfs(nx,ny,k+1);
        }
    }
}
int main(){
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>a[i];
    }
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            if(a[i][j]=='y'){
                q[0].x=i;
                q[0].y=j;
                dfs(i,j,1);
            }
        }
    }
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            if(v[i][j]==1) cout<<a[i][j];
            else cout<<"*";
        }
        cout<<endl;
    }
    return 0;
}
2022/11/6 19:42
加载中...