在我的以下代码中获得MLE(内存限制错误)。尝试解决ROUND C 2019(问题A-摆动步行)Kickstart问题

问题描述 投票:0回答:1
I AM GETTING MLE ERROR. Please suggest strategies to avoid this error. I am getting the correct answer though.

问题-问题Banny刚买了一个新的可编程机器人。为了测试他的编码技能,他将机器人放置在一个正方形的网格中,该网格具有R行(从北到南从1到R)和C列(从西到东从1到C)。 r行和c列中的正方形表示为(r,c)。

最初,机器人从正方形(SR,SC)开始。 Banny将给机器人N条指令。每个指令都是N,S,E或W中的一个,指令机器人分别向北,向南,向东或向西移动一个正方形。

如果机器人移动到之前所在的正方形,则机器人将继续以相同的方向移动,直到到达之前未到达的正方形。 Banny永远不会给机器人发出指令,以使其离开网格。

您可以按照N指令帮助Banny确定机器人将在哪个方块中完成?

输入输入的第一行给出了测试用例的数量,T。每个测试用例都从一行开始,该行分别包含五个整数N,R,C,SR和SC,指令数,行数,列数,机器人的起始行和起始列。

然后,下一行包含N个字符的单个字符串;这些字符的第i个字符是Banny给机器人的第i个指令(如上所述,N,S,E或W中的一个)。

输出对于每个测试用例,输出包含Case #x的一行:r c,其中x是测试用例编号(从1开始),r是机器人完成的行,c是机器人完成的列。

限制内存限制:1GB。1≤T≤100。1≤R≤5×104。1≤C≤5×104。1≤SR≤R。1≤SC≤C。这些说明不会导致机器人移出网格。

测试集1(可见)时间限制:20秒。1≤N≤100。

测试集2(隐藏)时间限制:60秒。1≤N≤5×104。

样本

输入

输出

35 3 6 2 3脑电图4 3 3 1 1SESE11 5 8 3 4NEESSWWNESE

案例1:3 2案例2:3 3案例3:3 7

**CODE -**
#include<iostream>
#include<vector>
#include<cstring>
using namespace std;
void trace_pos(vector<vector<int> >a,string s,int n,int r,int c,int t){
  for(int i = 0;i < n;i++){
    if(s[i] == 'N'){
      while(a[r][c] == 1){
        r--;
      }
      a[r][c] = 1;
    }
    if(s[i] == 'S'){
      while(a[r][c] == 1){
        r++;
      }
      a[r][c] = 1;
    }
    if(s[i] == 'W'){
      while(a[r][c] == 1){
        c--;
      }
      a[r][c] = 1;
    }
    if(s[i] == 'E'){
      while(a[r][c] == 1){
        c++;
      }
      a[r][c] = 1;
    }
  }
  r = r + 1;
  c = c + 1;
  cout<<"Case #"<<t<<": "<<r<<" "<<c<<endl;
}
int main(){
  int t,q = 1;
  scanf("%d",&t);
  while(q <= t){
    int n,x,y,r,c;
    //char s[100];
    string s;
    cin>>n>>x>>y>>r>>c;
    r = r - 1;
    c = c - 1;
    cin>>s;
    //scanf("%s",s);
    //scanf("%d%d%d%d%d",n,x,y,r,c);
    vector<vector<int> >a(x,vector<int> (y,0));
    a[r][c] = 1;
    trace_pos(a,s,n,r,c,q);
    q++;
  }
  return 0;
}
c++ stl
1个回答
0
投票

您正在获得MLE,因为您超出了内存限制。我假设您在编写约束时犯了一个错误。我认为大案例的限制是1 <= N, R, C <= 5*10^4。因此,在最坏的情况下,您要声明大小为5*10^4 * 5*10^4的2D向量,即25*10^8,大约需要10 GB的内存。我认为这个问题并不能给您那么多的记忆(据我所知,没有竞赛问题可以让您有这么多的记忆)。

© www.soinside.com 2019 - 2024. All rights reserved.