#include<bits/stdc++.h>
using namespace std;
int n;
char c[105][105],d[105][105];
char g[8]={'0','y','i','z','h','o','n','g'};
int y[9]={0, 1,-1, 0,1, 0,-1, 1,-1};
int x[9]={0, -1,1, 1,0, -1,0, 1,-1};
void dfs1(int a,int cnt,int x1,int y1,int x2,int y2){
if(cnt>7){
for(int i=7;i>=1;i--){
x1-=x2;y1-=y2;
d[x1][y1]=g[i];
}
return;
}
if(a!=g[cnt]) return;
if(cnt==1){
for(int i=1;i<=8;i++){
x1+=x[i];y1+=y[i];
if(x1>0 && x1<=n && y1>0 && y1<=n){
dfs1(c[x1][y1],cnt+1,x1,y1,x[i],y[i]);
}
x1-=x[i];y1-=y[i];
}
}
else{
x1+=x2;y1+=y2;
if(x1>0 && x1<=n && y1>0 && y1<=n){
dfs1(c[x1][y1],cnt+1,x1,y1,x2,y2);
}
x1-=x2;y1-=y2;
}
return;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>c[i][j];
d[i][j]='*';
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(c[i][j]=='y'){
dfs(1,i,j,0,0);
dfs1(c[i][j],1,i,j,0,0);
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cout<<d[i][j];
}
cout<<endl;
}
return 0;
}
********
g*******
n*******
o*******
h*******
z*******
i*******
y*******
#include<bits/stdc++.h>
using namespace std;
int n;
char c[105][105],d[105][105];
char g[8]={'0','y','i','z','h','o','n','g'};
int y[9]={0, 1,-1, 0,1, 0,-1, 1,-1};
int x[9]={0, -1,1, 1,0, -1,0, 1,-1};
void dfs(int cnt,int x1,int y1,int x2,int y2){
if(cnt>7){
for(int i=7;i>=1;i--){
x1-=x2;y1-=y2;
d[x1][y1]=g[i];
}
return;
}
if(cnt==1){
for(int i=1;i<=8;i++){
if(c[x1+x[i]][y1+y[i]]==g[cnt+1]){
dfs(cnt+1,x1+x[i],y1+y[i],x[i],y[i]);
}
}
}
else{
if(c[x1+x2][y1+y2]==g[cnt+1]){
dfs(cnt+1,x1+x2,y1+y2,x2,y2);
}
}
return;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>c[i][j];
d[i][j]='*';
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(c[i][j]=='y'){
dfs(1,i,j,0,0);
dfs1(c[i][j],1,i,j,0,0);
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cout<<d[i][j];
}
cout<<endl;
}
return 0;
}
*yizhong
*y******
**i*****
***z****
****h***
*****o**
******n*
*******g
(顺便问一下我前两个代码为什么错了)