dalao们求救啊40分
查看原帖
dalao们求救啊40分
601747
xibaohe楼主2023/1/21 14:26

四十pts

其余点WA

感激不尽

#include<bits/stdc++.h>
using namespace std;

int n;
char mp[105][105],tel[8]={' ','y','i','z','h','o','n','g'};
bool flag[105][105];
void check(int x,int y,int f,int step)
{
    if(x<1||x>n||y<1||y>n) return;
    if(step==8)
    {
        if(f==1)
        {
            for(int i=1;i<=7;i++)
            flag[x][y+i]=true;
            return;
        }
        if(f==2)
        {
            for(int i=1;i<=7;i++)
            flag[x-i][y+i]=true;
            return;
        }
        if(f==3)
        {
            for(int i=1;i<=7;i++)
            flag[x-i][y]=true;
            return;
        }
        if(f==4)
        {
            for(int i=1;i<=7;i++)
            flag[x-i][y-i]=true;
            return;
        }
        if(f==5)
        {
            for(int i=1;i<=7;i++)
            flag[x][y-i]=true;
            return;
        }
        if(f==6)
        {
            for(int i=1;i<=7;i++)
            flag[x+i][y-i]=true;
            return;
        }
        if(f==7)
        {
            for(int i=1;i<=7;i++)
            flag[x+i][y]=true;
            return;
        }
        if(f==8)
        {
            for(int i=1;i<=7;i++)
            flag[x+i][y-i]=true;
            return;
        }
    }
    if(mp[x][y]!=tel[step]) return;
    if(f==1)
    check(x,y-1,1,step+1);
    if(f==2)
    check(x+1,y-1,2,step+1);
    if(f==3)
    check(x+1,y,3,step+1);
    if(f==4)
    check(x+1,y+1,4,step+1);
    if(f==5)
    check(x,y+1,5,step+1);
    if(f==6)
    check(x-1,y+1,6,step+1);
    if(f==7)
    check(x-1,y,7,step+1);
    if(f==8)
    check(x-1,y+1,8,step+1);
}

int main(){
    cin>>n;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            cin>>mp[i][j];
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
        {
            check(i,j,1,1);
            check(i,j,2,1);
            check(i,j,3,1);
            check(i,j,4,1);
            check(i,j,5,1);
            check(i,j,6,1);
            check(i,j,7,1);
            check(i,j,8,1);
        }
    for(int i=1;i<=n;i++)
    {

        for(int j=1;j<=n;j++)
        {
            if(flag[i][j]==true)
            cout<<mp[i][j];
            else
            cout<<'*';
        }
        cout<<endl;
    }
    return 0;
}
2023/1/21 14:26
加载中...