本地能过测试点1,但洛谷上不行
查看原帖
本地能过测试点1,但洛谷上不行
1196460
lawhello楼主2024/9/8 21:09
#include<bits/stdc++.h>
#define ll long long
#define maxn 250
#define INF 0x3f3f3f3f
using namespace std;
int n,vis[maxn][maxn]={0};
int mov[9][3]={{1,0},{0,1},{1,1},{1,-1},{-1,1},{-1,0},{0,-1},{-1,-1}};
char a[maxn][maxn]={0},s[10]="yizhong";
int dfs(int x,int y,int p,int dir)
{
    int res=0;
    if(p==7)
    {
        vis[x][y]-=1;
        return 1;
    }
    if(a[x][y]==s[p])
    {
        vis[x+mov[dir][0]][y+mov[dir][1]]+=1;
        res=dfs(x+mov[dir][0],y+mov[dir][1],p+1,dir);
        if(!res)
        vis[x+mov[dir][0]][y+mov[dir][1]]-=1;
    }
    return res;
}
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        getchar();
        for(int j=1;j<=n;j++)
        scanf("%c",&a[i][j]);
    }
    int tem=0;
    for(int i=1;i<=n;i++)
    for(int j=1;j<=n;j++)
    if(a[i][j]=='y')
    {   tem=0;
        vis[i][j]+=1;
        for(int k=0;k<8;k++)
        {   
            tem|=dfs(i,j,0,k);
        }
        if(!tem)
        vis[i][j]-=1;
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        if(!vis[i][j])
        printf("*");
        else
        printf("%c",a[i][j]);
        puts("");
    }
}
2024/9/8 21:09
加载中...