FENCE 런타임오류 중 memory limit exceeded 때문인데 이유를 모르겠네요 ㅜ 박태우 ##소스코드 ~~~ c++ #include using namespace std; int calculate_area(int *high,int start,int n) //각 지점에서 시작한 직사각형 넓이 { int *end = new int[n-start]; int area,count=0,most=0; end[0] = start; for(int i=start; i<n; i++) //시작한 지점의 높이보다 작은 위치를 저장 { if(high[end[count]] > high[i]) { end[count+1] = i; count++; } if(i == n-1 && end[count]!=n-1) { end[count+1] = n; count++; } } if(count == 0) { most = high[start]*(n-start); return most; } for(int i=0; i+1<=count; i++) { area = (end[i+1] - end[0])*high[end[i]]; if(most < area) most = area; } return most; } int main() { int cases=0; cin >> cases; for(int i=0; i { int n,area,most=0; cin>>n; int *high = new int[20000]; //높이 for(int j=0; j<n; j++) { cin>>high[j]; } for(int j=0; j<n; j++) { area = calculate_area(high,j,n); if(most < area) most = area; } cout<<most<<endl; } } ~~~ c++ 프로그램으로 돌리면 답은 나오는데 답안제출하니 런타임오류가 뜨네요 메모리 초과때문인거 같은데 왜그러죠 ㅜㅜ 위의 소스코드는 아니지만 end의 메모리는 시작한 지점의 높이보다 작은 높이의 갯수를 계산해 동적할당을 해도 런타임오류가 뜨네요;; 10년 전
1개의 댓글이 있습니다. hyunhwan 매번 메모리를 동적으로 할당하시고 delete를 하지 않고 계속 할당하다 보니 memory leak이 발생하여 문제가 발생하는게 아닌가 추측해봅니다. 10년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
박태우
##소스코드
~~~ c++
#include
using namespace std;
int calculate_area(int *high,int start,int n) //각 지점에서 시작한 직사각형 넓이
{
int *end = new int[n-start];
int area,count=0,most=0;
}
int main()
{
{
int cases=0;
cin >> cases;
for(int i=0; i
int n,area,most=0;
cin>>n;
}
~~~
c++ 프로그램으로 돌리면 답은 나오는데 답안제출하니 런타임오류가 뜨네요
메모리 초과때문인거 같은데 왜그러죠 ㅜㅜ
위의 소스코드는 아니지만 end의 메모리는 시작한 지점의 높이보다 작은 높이의 갯수를
계산해 동적할당을 해도 런타임오류가 뜨네요;;
10년 전