广搜莫名其妙的编译错误

P1746 离开中山路

rlgrlgrlg @ 2023-04-05 10:56:12


#include<bits/stdc++.h>
using namespace std;
bool a[1010][1010];
struct node
{
    int x,y;
    int cnt;
};
queue<node> b;
int p[4][2]={
    1,0,
    0,1,
    -1,0,
    0,-1,
};
int n,x1,x2,y1,y2;
int main()
{
    cin>>n;
    string str;
    for(int i=1;i<=n;i++)
    {
        cin>>str;
        for(int j=1;j<=n;j++)
        {
            a[i][j]=str[j-1]-'0';
        }
    }
    cin>>x1>>y1>>x2>>y2;
    b.push((node){x1,y1,0});
    while(!b.empty())
    {
        node t=b.front();
        b.pop();
        if(t.x==x2&&t.y==y2)
        {
            cout<<t.cnt;
            break;
        }
        for(int i=0;i<4;i++)
        {
            int x=t.x+p[i][0];
            int y=t.y+p[i][1];
            if(x>0&&y>0&&x<=n&&y<=n&&!a[x][y])
            {
                b.push((node){x,y,t.cnt+1});
                a[x][y]=1;
            }
        }
    }
}```

by SkyWave @ 2023-04-05 10:58:23

@rlgrlgrlg 改掉万能头坏习惯就好了


by SkyWave @ 2023-04-05 10:59:15

--#include<bits/stdc++.h>

++#include <iostream>
++#include <queue>

by rlgrlgrlg @ 2023-04-05 10:59:23

在Devc++上运行没问题,但洛谷会显示编译错误


by SkyWave @ 2023-04-05 11:00:53

@rlgrlgrlg 听话,以后改掉万能头受益终生


by rlgrlgrlg @ 2023-04-05 11:01:13

这是为什么


by ud2_ @ 2023-04-05 11:01:40

别用全局变量就好了。全局、std*posix 这些命名空间是标准库放东西的地方。

@@ -1,5 +1,6 @@
 #include<bits/stdc++.h>
 using namespace std;
+namespace {
 bool a[1010][1010];
 struct node
 {
@@ -14,7 +15,7 @@
     0,-1,
 };
 int n,x1,x2,y1,y2;
-int main()
+void my_main()
 {
     cin>>n;
     string str;
@@ -49,3 +50,5 @@
         }
     }
 }
+}
+int main() { my_main(); }

by SkyWave @ 2023-04-05 11:01:50

@rlgrlgrlg 因为万能头就是邪教


by 2011FYCCCTA @ 2023-04-05 11:02:38

p数组定义错了!!!@rlgrlgrlg 应是:

int p[4][2]={
    {1,0},
    {0,1},
    {-1,0},
    {0,-1}
};

by SkyWave @ 2023-04-05 11:02:56

@2011FYCCCTA 这里没有问题


by SkyWave @ 2023-04-05 11:03:21

就是因为他是用了邪教,洛谷不乐意了


| 下一页