我写了个什么东西?!
  • 板块灌水区
  • 楼主Shanxiao520
  • 当前回复14
  • 已保存回复14
  • 发布时间2024/8/8 08:44
  • 上次更新2024/8/8 09:55:33
查看原帖
我写了个什么东西?!
1030575
Shanxiao520楼主2024/8/8 08:44

这是我的Jumping on Walls代码,我一直以为这样子写就是bfs,但是我的同学看完我的代码后却认定这是dfs。

我不会废了吧

#include<bits/stdc++.h>
using namespace std;
int n,k;
long long b[5][300005];
char a[5][200005];
struct zb
{
    int a,b;
};
queue<zb> q;
void bfs(int x,int y,int j)
{
    a[x][y]='X';
    if(a[x][y+1]=='-'&&y+1>b[x][y]+1&&y+1<=n+k)
    {
        b[x][y+1]=b[x][y]+1;
        a[x][y+1]='X';
        q.push(zb{x,y+1});
    }
    if(x==1&&a[2][y+k]=='-'&&y+k>b[x][y]+1&&y+k<=n+k)
    {
        b[2][y+k]=b[x][y]+1;
        a[2][y+k]='X';
        q.push(zb{2,y+k});
    }
    if(x==2&&a[1][y+k]=='-'&&y+k>b[x][y]+1&&y+k<=n+k)
    {
        b[1][y+k]=b[x][y]+1;
        a[1][y+k]='X';
        q.push(zb{1,y+k});
    }
    if(a[x][y-1]=='-'&&y-1>b[x][y]+1&&y-1<=n+k&&y-1>0)
    {
        b[x][y-1]=b[x][y]+1;
        a[x][y-1]='X';
        q.push(zb{x,y-1});
    }
    while(!q.empty())
    {
        int x2=q.front().a;
        int y2=q.front().b;
        q.pop();
        bfs(x2,y2,b[x2][y2]);
    }
}
int main()
{
    cin>>n>>k;
    for(int i=1;i<=2;i++)
    {
        for(int ii=1;ii<=n;ii++)
        {
            cin>>a[i][ii];
        }
    }
    for(int i=1;i<=2;i++)
    {
        for(int ii=n+1;ii<=n+k;ii++)
        {
            a[i][ii]='-';
        }
    }
    bfs(1,1,0);
    for(int i=1;i<=2;i++)
    {
        for(int ii=n+1;ii<=n+k;ii++)
        {
            if(b[i][ii]>0)
            {
                cout<<"YES";
                return 0;
            }
        }
    }
    cout<<"NO";
    return 0;
} 
2024/8/8 08:44
加载中...