他说我第一行第二列 读到 的是*而非y,但是我确实答案是y啊,有空的大佬可以复制我的代码到编译器跑一下,试一下他的样例,球球了 orz
#include<cstdio>
#include<iostream>
#include<queue>
using namespace std;
int dx[9]={0,-1,-1,-1,0,1,1,1,0};
int dy[9]={0,-1,0,1,1,1,0,-1,-1};
int usedx[8];
int usedy[8];
char an[8]={'1','y','i','z','h','o','n','g'};
int n;
char map[101][101];
char newmap[101][101];
struct starty{
int xi;
int yi;
}they[100001];
int kx,ky;
int num=0;
void dfs(int xi,int yi,int step,int d){
if(step==7){
for(int i=1;i<=7;i++){
newmap[usedx[i]][usedy[i]]=an[i];
}
return ;
}
int i=d;
kx=xi+dx[i];
ky=yi+dy[i];
if(kx>=1&&kx<=n&&ky>=1&&ky<=n&&map[kx][ky]==an[step+1]){
usedx[step+1]=kx;
usedy[step+1]=ky;
dfs(kx,ky,step+1,d);}
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
newmap[i][j]='*';
scanf("%c",&map[i][j]);
while(map[i][j]=='\n')
scanf("%c",&map[i][j]);
if(map[i][j]=='y'){
num++;
they[num].xi=i;
they[num].yi=j;
}
}
}
for(int i=1;i<=num;i++){
usedx[1]=they[i].xi;
usedy[1]=they[i].yi;
for(int j=1;j<=8;j++)
dfs(they[i].xi,they[i].yi,1,j);
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++)
printf("%c",newmap[i][j]);
printf("\n");
}
return 0;
}