1 条题解
-
0
#include<bits/stdc++.h> using namespace std; const int N=110; char stand[]="yizhong"; int dir[][2]={{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}}; char fz[N][N];//保存单词矩阵和标准的stand作对比 int vis[N][N];//保存路径答案 int n; struct node { int x,y;//表示每个答案的坐标 }c[N];//存储路径 void dfs(int x,int y,node c[],int k,int cnt) { if(cnt==7) { for(int i=0;i<7;i++) vis[c[i].x][c[i].y]=1;//将路径变成答案 } else { int dx=x+dir[k][0]; int dy=y+dir[k][1]; if(fz[dx][dy]==stand[cnt+1]||cnt==6) { c[cnt].x=x,c[cnt].y=y; dfs(dx,dy,c,k,cnt+1); } } } int main() { cin>>n; for(int i=0;i<n;i++) for(int j=0;j<n;j++) { cin>>fz[i][j]; } memset(vis,0,sizeof(vis)); for(int i=0;i<n;i++) for(int j=0;j<n;j++) if(fz[i][j]=='y') for(int k=0;k<8;k++) { int x=i+dir[k][0]; int y=j+dir[k][1]; if(fz[x][y]=='i')//找到正确方向 dfs(i,j,c,k,0); } for(int i=0;i<n;i++) { for(int j=0;j<n;j++) if(vis[i][j]) printf("%c",fz[i][j]); else printf("*"); cout<<endl; } return 0; }
- 1
信息
- ID
- 121
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 4
- 标签
- 递交数
- 39
- 已通过
- 20
- 上传者