• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    해결됨

Compiler 차이에 따른 디버깅차이

20.07.29 22:06 작성 조회수 211

0

수업 잘듣고 있습니다.

다름이 아니라 86번문제를 강좌듣기전에 풀어보았습니다. 아래의 코드를 visual스튜디오에서 돌리면 정답까지 잘 출력하는데, 수업 컴파일러인 dev c++에서는 f9를 누르자마자 아래 사진처럼 에러가 납니다.  visual 스튜디오에서만 돌아가는게 찝찝합니다. 만약 코딩테스트 칠때에도 dev c++과 비슷한 컴파일러일까봐 두렵습니다. 어떤점이 dev c++에 에러를 뜨게 하는건가요?

#include<iostream>

#include<string>

#include<vector>

#include<stack>

#include<algorithm> 

#include<queue>

using namespace std;

int n, m, answer = 2147000000;

int ch[13];

int road[51][51];

vector<pair<int, int> > pizza, house;

int distance(const pair<int, int>& a, const pair<int, int>& b)

{

return abs(a.first - b.first) + abs(a.second - b.second);

}

void DFS(int idx, int cnt)

{

int dis;

if (cnt == m)

{

int sum = 0;

for (int i = 0; i < house.size(); i++)

{

dis = 2147000000;

for (int j = 0; j < pizza.size(); j++)

{

if (ch[j] == 1)

{

dis = min(dis, distance(house[i], pizza[j]));

}

}

sum += dis;

}

if (answer > sum) answer = sum;

return;

}

else if (idx == pizza.size())

{

return;

}

else

{

ch[idx] = 1;

DFS(idx + 1, cnt + 1);

ch[idx] = 0;

DFS(idx + 1, cnt);

}

}

int main()

{

cin >> n >> m;

for (int i = 0; i < n; i++)

{

for (int j = 0; j < n; j++)

{

cin >> road[i][j];

if (road[i][j] == 2)

{

pizza.push_back(make_pair(i, j));

}

else if (road[i][j] == 1)

{

house.push_back(make_pair(i, j));

}

}

}

DFS(0, 0);

cout << answer;

return 0;

}

답변 1

답변을 작성해보세요.

1

안녕하세요^^

위 코드는 DEV-C++의 GCC 컴파일러에서 전혀 에러가 없는 코드입니다. 

섹션 5의 첫 번째 영상에 DEV-C++에서 컴파일러 업그레드 방법을 알려드립니다. C++ 14 버젼으로 업그레드 하고 다시 컴파일해보세요. 그리고 데브로 하다보면 간혹 에러가 없는 코드도 이런일이 발생합니다. 그럴때는 그냥 에러 파일을 닫으시고 다시 컴파일해보세요. 그럼 잘 컴파일 될 겁니다.

대부분의 채점 서버의 컴파일러는 GCC 컴파일러인 경우가 많습니다. 그러니 비쥬얼 스튜디오 보다는 데브에서 하기를 권장합니다.