-
카테고리
-
세부 분야
알고리즘 · 자료구조
-
해결 여부
해결됨
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
김태원
지식공유자2020.07.30
안녕하세요^^
위 코드는 DEV-C++의 GCC 컴파일러에서 전혀 에러가 없는 코드입니다.
섹션 5의 첫 번째 영상에 DEV-C++에서 컴파일러 업그레드 방법을 알려드립니다. C++ 14 버젼으로 업그레드 하고 다시 컴파일해보세요. 그리고 데브로 하다보면 간혹 에러가 없는 코드도 이런일이 발생합니다. 그럴때는 그냥 에러 파일을 닫으시고 다시 컴파일해보세요. 그럼 잘 컴파일 될 겁니다.
대부분의 채점 서버의 컴파일러는 GCC 컴파일러인 경우가 많습니다. 그러니 비쥬얼 스튜디오 보다는 데브에서 하기를 권장합니다.
답변 1