题解 P1101 【单词方阵】

· · 题解

写了半小时的代码,看我超级大爆搜!!!

#include <iostream>
using namespace std;
int a[110][110];
char b[110][110];
int n;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++)
    for(int j=1;j<=n;j++){
        cin>>b[i][j];
        a[i][j]=0;
    }
    for(int i=1;i<=n;i++)
    for(int j=1;j<=n;j++){
        if(b[i][j]=='y'){
        if(b[i-1][j]=='i'&&b[i-2][j]=='z'&&b[i-3][j]=='h'&&b[i-4][j]=='o'&&b[i-5][j]=='n'&&b[i-6][j]=='g')
        a[i-1][j]=1,a[i-2][j]=1,a[i-3][j]=1,a[i-4][j]=1,a[i-5][j]=1,a[i-6][j]=1,a[i][j]=1;
        if(b[i][j-1]=='i'&&b[i][j-2]=='z'&&b[i][j-3]=='h'&&b[i][j-4]=='o'&&b[i][j-5]=='n'&&b[i][j-6]=='g')
        a[i][j-1]=1,a[i][j-2]=1,a[i][j-3]=1,a[i][j-4]=1,a[i][j-5]=1,a[i][j-6]=1,a[i][j]=1;
        if(b[i-1][j-1]=='i'&&b[i-2][j-2]=='z'&&b[i-3][j-3]=='h'&&b[i-4][j-4]=='o'&&b[i-5][j-5]=='n'&&b[i-6][j-6]=='g')
        a[i-1][j-1]=1,a[i-2][j-2]=1,a[i-3][j-3]=1,a[i-4][j-4]=1,a[i-5][j-5]=1,a[i-6][j-6]=1,a[i][j]=1;
        if(b[i-1][j+1]=='i'&&b[i-2][j+2]=='z'&&b[i-3][j+3]=='h'&&b[i-4][j+4]=='o'&&b[i-5][j+5]=='n'&&b[i-6][j+6]=='g')
        a[i-1][j+1]=1,a[i-2][j+2]=1,a[i-3][j+3]=1,a[i-4][j+4]=1,a[i-5][j+6]=1,a[i-6][j+6]=1,a[i][j]=1;
        if(b[i+1][j]=='i'&&b[i+2][j]=='z'&&b[i+3][j]=='h'&&b[i+4][j]=='o'&&b[i+5][j]=='n'&&b[i+6][j]=='g')
        a[i+1][j]=1,a[i+2][j]=1,a[i+3][j]=1,a[i+4][j]=1,a[i+5][j]=1,a[i+6][j]=1,a[i][j]=1;
        if(b[i][j+1]=='i'&&b[i][j+2]=='z'&&b[i][j+3]=='h'&&b[i][j+4]=='o'&&b[i][j+5]=='n'&&b[i][j+6]=='g')
        a[i][j+1]=1,a[i][j+2]=1,a[i][j+3]=1,a[i][j+4]=1,a[i][j+5]=1,a[i][j+6]=1,a[i][j]=1;
        if(b[i+1][j-1]=='i'&&b[i+2][j-2]=='z'&&b[i+3][j-3]=='h'&&b[i+4][j-4]=='o'&&b[i+5][j-5]=='n'&&b[i+6][j-6]=='g')
        a[i+1][j-1]=1,a[i+2][j-2]=1,a[i+3][j-3]=1,a[i+4][j-4]=1,a[i+5][j-5]=1,a[i+6][j-6]=1,a[i][j]=1;
        if(b[i+1][j+1]=='i'&&b[i+2][j+2]=='z'&&b[i+3][j+3]=='h'&&b[i+4][j+4]=='o'&&b[i+5][j+5]=='n'&&b[i+6][j+6]=='g')
        a[i+1][j+1]=1,a[i+2][j+2]=1,a[i+3][j+3]=1,a[i+4][j+4]=1,a[i+5][j+5]=1,a[i+6][j+6]=1,a[i][j]=1;
        }
    }
    for(int i=1;i<=n;i++){
    for(int j=1;j<=n;j++){
        if(a[i][j])cout<<b[i][j];
        else cout<<"*";
    }cout<<endl;}
    return 0;
}

希望给大家带来点帮助啊!