大佬能帮帮我看看这代码为啥会编译失败(BFS)

P1443 马的遍历

sbsrg @ 2024-08-07 20:43:50


#include<bits/stdc++.h>
using namespace std;
int n,m,x1[8]={1,1,2,2,-1,-1,-2,-2},y1[8]={2,-2,1,-1,2,-2,1,-1},b[402][402]={0},x,y,sum,o=1;
bool a[402][402];
queue<int> x2,y2,sum1;
int main()
{
    cin>>n>>m>>x>>y;
    memset(a,true,sizeof(a));
    x2.push(x);
    y2.push(y);
    sum1.push(1);
    b[x][y]=1;
    a[x][y]=false;
    while(o!=0)
    {
        x=x2.front();
        y=y2.front();
        sum=sum1.front();
        for(int i=0;i<=7;i++)
        {
            if((x+x1[i])>=1&&(y+y1[i])>=1&&(x+x1[i])<=n&&(y+y1[i])<=m&&a[x+x1[i]][y+y1[i]]==true)
            {
                b[x+x1[i]][y+y1[i]]=sum+1;
                a[x+x1[i]][y+y1[i]]=false;
                x2.push(x+x1[i]);
                y2.push(y+y1[i]);
                sum1.push(sum+1);
                o++;
            }
        }
        x2.pop();
        y2.pop();
        sum1.pop();
        o--;
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            printf("%d ",b[i][j]-1);
        }
        printf("\n");
    }
    return 0;
}
# ```
  蟹蟹惹

by dienter @ 2024-08-07 20:47:17

@zhou430502 这边显示编译成功啊?

你发一下编译信息


by dienter @ 2024-08-07 20:48:40

@zhou430502 当我没说


by Untitled_unrevised @ 2024-08-07 20:51:12

y1 是一个标准库里已经弃用但仍然存在的一个函数,而你的实现使用了 y1 作为数组名导致了命名冲突。

下次遇到编译出错的问题学会自己看报错信息,第一行就已经直接说出是什么地方出问题了。


by dienter @ 2024-08-07 20:51:42

楼上正解


by sbsrg @ 2024-08-07 20:56:27

xiexie (>_<)


by sbsrg @ 2024-08-24 20:36:02

@zhou430502

#include<bits/stdc++.h>
using namespace std;
int k,b[11]={0},p,q,ji[300];
char n[31];
vector<int> a[11];
int bian(int s,int sum)
{
    b[s]=1;
    for(vector<int>::iterator iter = a[s].begin(); iter != a[s].end(); iter++)
    {
        if(b[*iter]==0) 
        {
            sum+=bian(*iter,1);
        }
    }
    return sum;
}
int main()
{
    __int128 sum=1;
    cin>>n>>k;
    for(int i=1;i<=k;i++)
    {
        cin>>p>>q;
        a[p].push_back(q);
    }
    for(int i=0;i<strlen(n);i++)
    {
        sum*=bian(n[i]-'0',1);
        for(int i=1;i<=10;i++)
        {
            b[i]=0;
        }
    }
    int i=0;
    for(;sum>0;)
    {
        int o=sum%10;
        ji[i]=o;
        sum/=10;
        i++;
    }
    for(int j=i-1;j>=0;j--) cout<<ji[j];
    return 0;
}

|