dalao救救我

P1101 单词方阵

这题我都……
by sss7020 @ 2019-04-17 13:14:47


```cpp #include<iostream> #include<string> #include<cstring> using namespace std; const string FIND="yizhong"; string a[105]; bool flag[105][105]; int n; void check(int x,int y,int fx){ if(fx==1){ for(int i=y;i<y+7;i++){ if(i>=n)return; if(a[x][i]!=FIND[i-y])return; } for(int i=y;i<y+7;i++){ flag[x][i]=1; } return; } if(fx==2){ for(int i=y;i>y-7;i--){ if(i<0)return; if(a[x][i]!=FIND[y-i])return; } for(int i=y;i>y-7;i--){ flag[x][i]=1; } return; } if(fx==3){ for(int i=x;i<x+7;i++){ if(i>=n)return; if(a[i][y]!=FIND[i-x])return; } for(int i=x;i<x+7;i++){ flag[i][y]=1; } return; } if(fx==4){ for(int i=x;i>x-7;i--){ if(i<0)return; if(a[i][y]!=FIND[x-i])return; } for(int i=x;i>x-7;i--){ flag[i][y]=1; } return; } if(fx==5){ for(int i=0;i<7;i++){ if(x+i>=n||y+i>=n)return; if(a[x+i][y+i]!=FIND[i])return; } for(int i=0;i<7;i++){ flag[x+i][y+i]=1; } return; } if(fx==6){ for(int i=0;i<7;i++){ if(x-i<0||y-i<0)return; if(a[x-i][y-i]!=FIND[i])return; } for(int i=0;i<7;i++){ flag[x-i][y-i]=1; } return; } if(fx==7){ for(int i=0;i<6;i++){ if(x-i<0||y+i>=n)return ; if(a[x-i][y+i]==FIND[i])return; } for(int i=0;i<6;i++){ flag[x-i][y+i]=1; } return; } if(fx==8){ for(int i=0;i<6;i++){ if(x+i>=n||y-i<0)return; if(a[x+i][y-i]==FIND[i])return; } for(int i=0;i<6;i++){ flag[x+i][y-i]=1; } return; } } void solve(int x,int y){ for(int i=1;i<=8;i++){ check(x,y,i); } } int main(){ memset(flag,0,sizeof(flag)); cin>>n; for(int i=0;i<n;i++) cin>>a[i]; for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ if(a[i][j]=='y')solve(i,j); } } for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ if(flag[i][j]==1)cout<<a[i][j]; else cout<<'*'; } cout<<endl; } return 0; } ```
by sss7020 @ 2019-04-17 13:16:06


|