求助,运行都不行

P1101 单词方阵

@[pengqiushi](/user/735164) 修改后代码如下: ```cpp #include<iostream> using namespace std; char s[15]="yizhong"; char a[105][105]; int v[105][105]; int n; void dfs(int x,int y,int xx,int yy,int c){ if(c==7){ int xxx=x-xx, yyy=y-yy; for(int i=1; i<=7; i++) { v[xxx][yyy]=1; xxx-=xx,yyy-=yy; } return; } if(x==0||y==0||x==n+1||y==n+1) return; if(a[x][y]!=s[c]) return; dfs(x+xx,y+yy,xx,yy,c+1); return; } int main() { cin>>n; for(int i=1; i<=n; i++) for(int j=1; j<=n; j++) cin>>a[i][j]; for(int i=1; i<=n; i++) for(int j=1; j<=n; j++){ dfs(i,j,-1,-1,0); dfs(i,j,-1,0,0); dfs(i,j,-1,1,0); dfs(i,j,0,-1,0); dfs(i,j,0,1,0); dfs(i,j,1,-1,0); dfs(i,j,1,0,0); dfs(i,j,1,1,0); } for(int i=1; i<=n; i++){ for(int j=1; j<=n; j++) if(v[i][j]==1) cout<<a[i][j]; else cout<<"*"; cout<<endl; } return 0; } ```
by LyuCx @ 2023-07-24 21:53:35


@[pengqiushi](/user/735164) 问题有三个: 1. 倒数第6行,a[i][j]第二维漏打了 1. if(x==-1||y==-1||x==n+1||y==n+1)其实x=0或y=0的时候就已经超出边界了 1. if(c==7)这一段问题比较严重,请自行理解。至于为什么要放到最前面,是因为当c=7时这一位本就是不需要的(c=0~6时才是字符串里的内容),所以超出边界依然合法
by LyuCx @ 2023-07-24 21:59:52


@[LyuCx](/user/420995) 现在AC了,感谢您的指导。
by pengqiushi @ 2023-07-25 20:22:05


|