MLE是什么错误?

灌水区

@[Hzh114514](/user/1054021) 空间超出限制
by DFs_YYDS @ 2024-03-20 13:40:40


@[Hzh114514](/user/1054021) 有可能是数组定义太大或递归层数太多
by DFs_YYDS @ 2024-03-20 13:41:17


能帮忙看下吗
by Hzh114514 @ 2024-03-20 13:44:50


```cpp /* 路障: 题目分析: 1 输入 T 组数据 每组数据有地图大小 每个路障的行下标和列下标 2 B 君每次走一步后 x y 的地方放下一个路障 3 如果 B 君能走到 n n 输出 Yes 否则输出 No 思路分析: 1 输入 T 表示有 T 组数据 1 循环 T 次输入每组地图的大小 n 1 循环 2n-2 次输入每个路障的行列下标 x 和 y 2 将二号地图的路障位置标记为当前路障落下时间(i) 其他地方初始化为 2n-1 2 调用 dfs 函数 2 声明 dfs 函数 1 标记当前位置 2 把当前位置入队 1 标记队首元素 2 队首出队 3 如果到达终点输出 Yes 并 结束函数 4 遍历四个方向 1 计算出下一个位置 2 越界判断 3 如果现在位置的层数 < 路障落下的时间 并且没有走过 1 把当前位置入队 2 把当前位置标记 3 计算层数并存下来 3 输出 No */ #include <bits/stdc++.h> using namespace std; struct node { int x,y,step; }t,u; queue <node> q; int T,n,x,y; int map1[1005][1005]; int map2[1005][1005]; bool book[1005][1005]; int d[4][2]={{0,1},{1,0},{0,-1},{-1,0}}; void bfs(int x,int y) { book[x][y]=1; t.x=x; t.y=y; t.step=0; q.push(t); while(!q.empty()) { t=q.front(); q.pop(); if(t.x==n && t.y==n) { cout << "Yes" << endl; return; } for(int i=0;i<4;i++) { int nx=t.x+d[i][0]; int ny=t.y+d[i][1]; if(nx>n || nx<1 || ny>n || ny<1) continue; if(map2[nx][ny]<map1[nx][ny]) { u.x=nx; u.y=ny; u.step=t.step+1; book[nx][ny]=1; q.push(u); } } } cout << "No" << endl; } int main() { cin >> T; for(int i=1;i<=T;i++) { cin >> n; memset(map1,2*n-1,sizeof(map1)); memset(map2,0,sizeof(map2)); memset(book,0,sizeof(book)); for(int j=1;j<=2*n-2;j++) { cin >> x >> y; map1[x][y]=i; } bfs(1,1); } return 0; } ```
by Hzh114514 @ 2024-03-20 13:46:33


又没有递归 空间也是按题目来的
by Hzh114514 @ 2024-03-20 13:47:42


@[Hzh114514](/user/1054021) bdfs at memset
by IOI_ILJYT @ 2024-03-20 14:16:23


@[Hzh114514](/user/1054021) 队列有可能太大了,又有三个$1005^{2}$的数组
by monkeyinGD @ 2024-03-20 19:27:55


@[Hzh114514](/user/1054021) map1的memset也有问题
by monkeyinGD @ 2024-03-20 19:28:42


@[Hzh114514](/user/1054021) 你没有判重。 验证码mlep祭
by incra @ 2024-03-20 21:07:04


|