社区讨论

这是什么鬼啊

P1747好奇怪的游戏参与者 2已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@mi6tjd9q
此快照首次捕获于
2025/11/20 10:35
4 个月前
此快照最后确认于
2025/11/20 10:35
4 个月前
查看原帖
无论怎样都输出0..
蒟蒻的奇葩写法
CPP
```#include<iostream>
using namespace std;
int dir[12][2]={{2,1},{1,2},{-1,2},{-2,1},{-1,-2},{-2,-1},{1,-2},{2,-1},{2,2},{-2,-2},{2,-2},{-2,2}};
int x0,x1,y0,y1;
int flag[100][100];
int vis[100][100];
int ans1,ans2,f,r;
struct node
{
    int x,y,dep;
}q1[1000],q2[1000];
void bfs1()
{
    f=-1;
    r=0;
    q1[r].x=1;
    q1[r].y=1;
    q1[r].dep=0;
    flag[1][1]=1;
    while(f<r)
    {
        node temp=q1[++f];
        if(temp.x==x0&&temp.y==y0)
        {
            ans1=temp.dep;
            break;
        }
        for(int k=0;k<12;k++)
        {
            int nx=x0+dir[k][0];
            int ny=y0+dir[k][1];
            if(x0<=0||y0<=0||x0>20||y0>20)continue;
            if(flag[nx][ny]==0)
            {
                r++;
                q1[r].x=nx;
                q1[r].y=ny;
                q1[r].dep=temp.dep+1;
                flag[nx][ny]=1;
            }
        }
    }
}
void bfs2()
{
    f=-1;
    r=0;
    q2[r].x=1;
    q2[r].y=1;
    q2[r].dep=0;
    vis[1][1]=1;
    while(f<r)
    {
        node temp=q2[++f];
        if(temp.x==x1&&temp.y==y1)
        {
            ans2=temp.dep;
            break;
        }
        for(int i=0;i<12;i++)
        {
            int nx=x1+dir[i][0];
            int ny=y1+dir[i][1];
            if(vis[nx][ny]==0)
            {
                r++;
                q2[r].x=nx;
                q2[r].y=ny;
                q2[r].dep=temp.dep+1;
                vis[nx][ny]=1;
            }
        }
    }
}
int main()
{
    cin>>x0>>y0>>x1>>y1;
    bfs1();
    bfs2();
    cout<<ans1<<endl<<ans2;
    return 0;
}
CPP

回复

2 条回复,欢迎继续交流。

正在加载回复...