社区讨论
求助,最后个g输不出来
P1101单词方阵参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mi6h8sxc
- 此快照首次捕获于
- 2025/11/20 04:50 4 个月前
- 此快照最后确认于
- 2025/11/20 04:50 4 个月前
CPP
#include<cstdio>
#include<iostream>
using namespace std;
int n,now=1;
bool vis[105][105];
int move1[8][2]={{1,0},{1,1},{1,-1},{0,1},{0,-1},{-1,-1},{-1,1},{-1,0}};
char rectangle[105][105],judge[8]="yizhong";
int dfs (int x1,int y1,int i,int j){ //传入移动方向和上一层的地址
if(rectangle[i+x1][j+y1]==judge[now]&&x1+i>=0&&x1+i<n&&y1+j>=0&&y1+j<n){
now++; //准备下一次判断
dfs(x1,y1,i+x1,j+y1);
if(now>=7) {vis[i][j]=1;now++;}//这个now和下面的配合保证这一条路是通的
now--;//如果最后没有走到结尾的话now是1
}
}
int main(){
scanf("%d",&n);
for(int a=0;a<n;a++)
cin>>rectangle[a];//读入
for(int a=0;a<n;a++)
for(int b=0;b<n;b++)
if(rectangle[a][b]=='y') {
for(int z=0;z<8;z++)
dfs(move1[z][0],move1[z][1],a,b);
now=1; //准备下一次循环
}
for(int a=0;a<n;a++){
for(int b=0;b<n;b++)
if(vis[a][b]) printf("%c",rectangle[a][b]);
else printf("*");
printf("\n");
}
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...